Repository with the purpose of learning a new E2E testing framework using Microsoft's 🎭 Playwright with Javascript
The REST Server used in this repository is a open source REST API provided by Paulo Gonçalves to help developers to learn about API testing.
- git
- node 14+
- or use nvm to manage multiple node versions
- Docker (Optional) for running tests on container
git clone https://github.com/ltsuda/playwright-serverest
# this will install all necessary development packages to run the tests. See package.json to see all packages installed
npm install
In this repository there are multiple test scripts with different configurations. Please, see the package.json/scripts
to see all options and to see the Playwrights' configuration, see file playwright.config.js
The following scripts was tested on Ubuntu 20.04/WSL
For example:
# to run all API tests
npm run test:api
# to run all Schema tests
npm run test:schema
# to run both API and Schema tests
npm run test:all
# to run all test with specific tag
npx playwright test --grep <tag>
All test scripts will generate the tests results using the HTML Reporter. To show the report, use the following scripts:
npm run reporter:html
This will start a webserver with the tests report, just ctrl+click or open the URL that is showing on your terminal
Building docker image to run the tests
The Docker
image runs the tests with the HTML reporter and starts the web server on port 9323 serving the tests reports.
To build the image and run all tests, run the following commands:
> docker build -f Dockerfile . -t test:docker
# wait ...
# To run the default node script, use the following command
# The container will continue running with the webserver open, navigate to http://localhost to see the test reports and press CTRL+C to stop the webserver and remove the container
# optionally, if you want the test results in case some test fails, bind a volume to host with "-v /fullpath:/tester" on the docker command
❯ docker run --rm --ipc=host -p 80:9323 playwright:docker
> [email protected] test:docker
> npx playwright test
[WebServer] event-loop-stats not found, ignoring event loop metrics...
92 passed (2s)
All tests passed. To open last HTML report run:
npx playwright show-report
> [email protected] posttest:docker
> npm run reporter:html
> [email protected] reporter:html
> npx playwright show-report
Serving HTML report at http://127.0.0.1:9323. Press Ctrl+C to quit.
# or, for example, if you want to change the test reporter
# in this case, the HTML report will not be generated and the web server will not run
> docker run --rm --ipc=host test:docker npx playwright test --reporter=list
.
├──.github/workflows
├── Dockerfile
├── README.md
├── README-ptbr.md
├── api
│ ├── fixtures.js
│ └── schemas
│ ├── carrinhos.js
│ ├── login.js
│ ├── produtos.js
│ └── usuarios.js
├── package-lock.json
├── package.json
├── playwright.config.js
└── tests
└── api
├── carrinhos.spec.js
├── login.spec.js
├── produtos.spec.js
├── schemas
│ ├── carrinhos.spec.js
│ ├── login.spec.js
│ ├── produtos.spec.js
│ └── usuarios.spec.js
└── usuarios.spec.js
- .github/workflows: directory with github workflows that runs at every
push
to main or everypull request
open.- main.yaml: run api and schema test jobs on
pull request
or run all tests whenpush
tomain
, then generate the HTML report and deploy it to github-pages - docker.yaml: build image
Dockerfile
, run respective scripts for both api and schema tags. This workflow runs on everypull request
or push to themain
branch.
- main.yaml: run api and schema test jobs on
- Dockerfile: docker image file to run locally in case of node it's not installed.
- api/schemas: directory with schemas for all endpoints and using https://joi.dev/ library
- api/pageFixtures.js: file with shared functions (Fixtures) that extends playwright's
test
to instantiate all endpoints and helper functions so each test case loads only what it needs. - playwright.config.js: playwright's configuration file to setup things like which reporter library to use, how many test workers to be used and how to start the REST server.
- tests/api: directory with all API test specs files, including the test schema directory
- tests/api/schema: directory with all Schema test spec files