Add e2e tests
New feature request, so removed the bug template.
At $work we use Cypress, which while similar to Selenium, is way more stable and less error-prone (i.e. you won't have to add a lot of setTimeouts in your code to handle dynamically loaded resources, it uses Promises instead).
Skosmos has several cases that are not easy to be covered by unit tests.
The #1016 bug, for example, requires a test vocabulary (which we have, with the initFuseki.sh script starting a Fuseki instance), and requires the user to visit a vocabulary page, then click on a concept. The error can be verified by inspecting the browser console message. These last steps are all easily achieved with a tool like Cypress.
The #1182 issue, another example, has a case where when you start typing a search term, it will create a URL concatenating certain parameters. When I updated Typeahead/Bloodhound, the parameters were not concatenated anymore due to changes in the JS third-party API. While @osma spotted it during the review, the code worked (slower) and it could have resulted in a performance regression. We can use a Cypress to not only drive the UI, but also act as a middleware capturing JS requests and either forwarding to real Fuseki or ending the test asserting that the URL contains certain parameters. That would prevent the regression @osma spotted.
In order to use Cypress, we could create an e2e folder with a package.json, cypress.json, and the tests. It wouldn't require any changes to Skosmos, only to the GitHub Action workflow.
There are other tools too, like Nightwatch, cavy, etc.
Another benefit of adding a tool like this with tests now, is that it would future-proof Skosmos should it ever moves to a different UI architecture (SPA, PWA, jQuery-only without Twig, Vue, React, etc). We would be able to modify the UI and just wait for the tests to run and verify that we didn't break anything.
It would have been helpful to have a suite of e2e tests for the #1182 PR.