Runs tests against a production version of the newsletters hub, i.e. it's a very high-level set of tests that interacts with the webpage in a similar way to manual QA testing would.
Uses playwright as the test runner.
All instructions based on a command line in this directory
- run
npm i
to install dependencies - run
npx playwright install
to install playwright dependencies (such as headless browsers)
- Copy (don't rename) the .env.template file to .env
- update the
BASE_URL
variable in .env to the environment you wish to test against (e.g. https://stage.economist.com) - fill in the credentials with a valid credentials to match the environment (ask a team-member if unsure)
- Run the tests with
npm run test
or the test script (webstorm)- To actually see the browser when running, use
npm run test:with-browser
instead
- To actually see the browser when running, use
The valid urls are local, dev, stage and prod.
To run a subset of tests, use test.only
or test.describe.only
in place of test
and test.describe
for any tests or describe blocks you wish to run. All other tests will be ignored.
We want integration tests to be completely independent of production code (i.e. it does not belong under /src
). Having it here forces us to think carefully about importing code from production, as we have to explicitly allow it, or to have a really obviously horrible relative import.
Separating this out allows us to only install it for running tests, and to avoid doing so for building the app, which speeds up all aspects of the CI (deployment and testing).