Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add selenium tests #70

Merged
merged 26 commits into from
Feb 15, 2024
Merged

Add selenium tests #70

merged 26 commits into from
Feb 15, 2024

Conversation

MatMoore
Copy link
Contributor

@MatMoore MatMoore commented Feb 14, 2024

This adds some selenium tests, using pytest-django's live_server fixture (equivalent to Django's LiveServerTestCase)

Selenium can be really fiddly, and I don't want these tests to slow us down, so would welcome any suggestions on how to make them easy to maintain.

(Note: the commit history is messy so this is best reviewed all together)

Details

Mocking

This is using the global mock @murdo-moj added for the catalogue, so the tests don't depend on datahub to run.

Structure

I've applied the page object pattern so that all the selectors are in one place, so if we change the template we can change that without rewriting the whole test class.

Each step in a test extracted to a helper method so we can reuse them for multiple scenarios.

Utilities

I've included some utilities to make this more useful:

  • Run axe-core against each page, to catch certain classes of accessibility issues - we had a couple of these due to mangling the html while refactoring
  • Each time the driver clicks on something, save a screenshot to the tmp directory, to aid debugging

CI

Selenium tests are quite slow, so I've made it a separate step that runs only if the unit tests pass. It uses a headless chrome browser, which is installed by default on the ubuntu runner.

Fixes

In the process of adding these tests, I've fixed a couple of html issues such as missing labels, multiple main sections, elements appearing outside of a landmark region.

@MatMoore MatMoore marked this pull request as ready for review February 14, 2024 15:16
@murdo-moj
Copy link
Contributor

might we want to disable screenshots from the workflow job? we can't see any of the screenshots on the runner

@MatMoore MatMoore merged commit 37c6a00 into main Feb 15, 2024
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants