Currently we have a few Selenium-based Integration tests in Refinery for Vis-Tool Launches (IGV, HiGlass), but these are slowing down our test suite over there/are quite flaky to run due to Selenium waiting and would be more appropriate in this repo.
With that being said, the UI tests are nice but maybe a bit overkill. It would be great if we could just specify a sample input.json along with a Vis-Tool and try to run a container with it through django-docker-engine.
Since we already have access to the Refinery code in our CI here, we could have a new repo structure here like:
├── LICENSE
├── README.md
├── ci_tests.py
└── tool-annotations
├── heatmap-scatterplot
├── heatmap-scatterplot.json
├── input.json
├── higlass
├── higlass.json
├── input.json
├── igv
├── igv.json
├── input.json
├── refinery-developer-tool
├── refinery-developer-tool.json
├── input.json
Where we would provide input.json(s) along with our Tool Annotations and attempt to:
- Create
ToolDefinitions from these ToolAnnotations (we're doing this currently)
- Launch a container through django-docker-engine utilizing the provided
input.json. This would need to satisfy the code in VisualizationTool.launch() which would mean that we'd need to create valid Nodes & FileStoreItems which could start to get tricky.
- Assert that we can get a 200 from each of the launched containers
EDIT: Thinking about this again, we could just have users provide the FILE_RELATIONSHIPS structure with urls pointing to reasonable test files that they could check into this repo as well (Could specify the raw.github.... versions). Then when we launch the Tool, we wouldn't have to worry about creating Refinery-specific objects.
Currently we have a few Selenium-based Integration tests in Refinery for Vis-Tool Launches (IGV, HiGlass), but these are slowing down our test suite over there/are quite flaky to run due to Selenium waiting and would be more appropriate in this repo.
With that being said, the UI tests are nice but maybe a bit overkill. It would be great if we could just specify a sample
input.jsonalong with a Vis-Tool and try to run a container with it through django-docker-engine.Since we already have access to the Refinery code in our CI here, we could have a new repo structure here like:
Where we would provide
input.json(s)along with our Tool Annotations and attempt to:ToolDefinitionsfrom these ToolAnnotations (we're doing this currently)input.json. This would need to satisfy the code inVisualizationTool.launch()which would mean that we'd need to create validNodes&FileStoreItemswhich could start to get tricky.EDIT: Thinking about this again, we could just have users provide the
FILE_RELATIONSHIPSstructure with urls pointing to reasonable test files that they could check into this repo as well (Could specify the raw.github.... versions). Then when we launch the Tool, we wouldn't have to worry about creating Refinery-specific objects.