Ghost/ghost/core/test/e2e-browser
Simon Backx b615c9f7d2
Added post scheduling Playwright test and loosened time restrictions (#15960)
refs https://github.com/TryGhost/Team/issues/2371

- Adds a test that schedules a post 5 seconds in the future and waits
for it to be published
- Reduced the time restrictions for scheduling: 
    - The minimum time in the frontend is now 5 seconds in the future (came
from 5 minutes in the future)
    - The time picker now suggests 10 minutes in the future instead of the
minimum scheduling time (came from 5 minutes)
    - In the backend, a post will be allowed to be scheduled if it is at
least 2 minutes in the past (came from 2 minutes in the future)
    - The scheduler will publish a post if it is at least 5 minutes in the
past, and maximum 5 minutes in the future (came from 2 minutes)
2022-12-07 17:29:36 +01:00
..
admin Added post scheduling Playwright test and loosened time restrictions (#15960) 2022-12-07 17:29:36 +01:00
portal Added playwright test for free member upgrade via portal (#15961) 2022-12-07 21:41:55 +05:30
utils Added playwright test for free member upgrade via portal (#15961) 2022-12-07 21:41:55 +05:30
README.md Added browser-based testing framework 2022-11-22 14:12:34 +00:00

Browser testing

Install

As per the docs, run the following to install the supported browsers for Playwright:

npx playwright install

Running tests

Run the browser test suite with yarn test:browser.

Record test instructions

After installing PlayWright, start to record tests using yarn test:browser:record.

Available flags:

  • --admin - Runs a test starting in Ghost Admin
  • --no-setup - When testing Ghost Admin, prevents the automated setup from running (for testing the setup wizard)
  • --fixtures="posts,users" - Install a set of fixtures, given as a comma-delimited list

When the window loads, hit the record button and click around. All of the link click steps will need to be tidied up to use better selectors, and any page.goto calls should be dropped (as they are likely a result of clicking links). The test generator is a useful assistant, but be wary of taking anything it generates as correct.

Writing tests

Recording tests will allow you to execute the steps in a browser that a user would follow. It's important to add assertions to ensure that we're not just testing that the site doesn't crash, but that we see the expected values on the page.

The test suite uses beforeAll and afterAll to setup Ghost and install fixtures. Each set of fixtures should have a new describe block to start a new instance of Ghost to be tested against.