add github actions reference to ci.md
This commit is contained in:
parent
b35b404a37
commit
c4a19e9338
352
docs/src/ci.md
352
docs/src/ci.md
|
|
@ -62,11 +62,355 @@ export default defineConfig({
|
||||||
|
|
||||||
## CI configurations
|
## CI configurations
|
||||||
|
|
||||||
The [Command line tools](./browsers#install-system-dependencies) can be used to install all operating system dependencies on GitHub Actions.
|
|
||||||
|
|
||||||
### GitHub Actions
|
### GitHub Actions
|
||||||
|
|
||||||
Check out our [GitHub Actions](ci-intro.md) guide for more information on how to run your tests on GitHub.
|
The [Command line tools](./browsers#install-system-dependencies) can be used to install all operating system dependencies on GitHub Actions.
|
||||||
|
|
||||||
|
#### On push/pull_request
|
||||||
|
* langs: js
|
||||||
|
|
||||||
|
Tests will run on push or pull request on branches main/master. The [workflow](https://docs.github.com/en/actions/using-workflows/about-workflows) will install all dependencies, install Playwright and then run the tests. It will also create the HTML report.
|
||||||
|
|
||||||
|
```yml js title=".github/workflows/playwright.yml"
|
||||||
|
name: Playwright Tests
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [ main, master ]
|
||||||
|
pull_request:
|
||||||
|
branches: [ main, master ]
|
||||||
|
jobs:
|
||||||
|
test:
|
||||||
|
timeout-minutes: 60
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: 18
|
||||||
|
- name: Install dependencies
|
||||||
|
run: npm ci
|
||||||
|
- name: Install Playwright Browsers
|
||||||
|
run: npx playwright install --with-deps
|
||||||
|
- name: Run Playwright tests
|
||||||
|
run: npx playwright test
|
||||||
|
- uses: actions/upload-artifact@v4
|
||||||
|
if: ${{ !cancelled() }}
|
||||||
|
with:
|
||||||
|
name: playwright-report
|
||||||
|
path: playwright-report/
|
||||||
|
retention-days: 30
|
||||||
|
```
|
||||||
|
|
||||||
|
#### On push/pull_request
|
||||||
|
* langs: python, java, csharp
|
||||||
|
|
||||||
|
Tests will run on push or pull request on branches main/master. The [workflow](https://docs.github.com/en/actions/using-workflows/about-workflows) will install all dependencies, install Playwright and then run the tests.
|
||||||
|
|
||||||
|
```yml python title=".github/workflows/playwright.yml"
|
||||||
|
name: Playwright Tests
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [ main, master ]
|
||||||
|
pull_request:
|
||||||
|
branches: [ main, master ]
|
||||||
|
jobs:
|
||||||
|
test:
|
||||||
|
timeout-minutes: 60
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- name: Set up Python
|
||||||
|
uses: actions/setup-python@v4
|
||||||
|
with:
|
||||||
|
python-version: '3.11'
|
||||||
|
- name: Install dependencies
|
||||||
|
run: |
|
||||||
|
python -m pip install --upgrade pip
|
||||||
|
pip install -r requirements.txt
|
||||||
|
- name: Ensure browsers are installed
|
||||||
|
run: python -m playwright install --with-deps
|
||||||
|
- name: Run your tests
|
||||||
|
run: pytest --tracing=retain-on-failure
|
||||||
|
- uses: actions/upload-artifact@v4
|
||||||
|
if: ${{ !cancelled() }}
|
||||||
|
with:
|
||||||
|
name: playwright-traces
|
||||||
|
path: test-results/
|
||||||
|
```
|
||||||
|
|
||||||
|
```yml java title=".github/workflows/playwright.yml"
|
||||||
|
name: Playwright Tests
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [ main, master ]
|
||||||
|
pull_request:
|
||||||
|
branches: [ main, master ]
|
||||||
|
jobs:
|
||||||
|
test:
|
||||||
|
timeout-minutes: 60
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- uses: actions/setup-java@v3
|
||||||
|
with:
|
||||||
|
distribution: 'temurin'
|
||||||
|
java-version: '17'
|
||||||
|
- name: Build & Install
|
||||||
|
run: mvn -B install -D skipTests --no-transfer-progress
|
||||||
|
- name: Ensure browsers are installed
|
||||||
|
run: mvn exec:java -e -D exec.mainClass=com.microsoft.playwright.CLI -D exec.args="install --with-deps"
|
||||||
|
- name: Run tests
|
||||||
|
run: mvn test
|
||||||
|
```
|
||||||
|
|
||||||
|
```yml csharp title=".github/workflows/playwright.yml"
|
||||||
|
name: Playwright Tests
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [ main, master ]
|
||||||
|
pull_request:
|
||||||
|
branches: [ main, master ]
|
||||||
|
jobs:
|
||||||
|
test:
|
||||||
|
timeout-minutes: 60
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- name: Setup dotnet
|
||||||
|
uses: actions/setup-dotnet@v4
|
||||||
|
with:
|
||||||
|
dotnet-version: 8.0.x
|
||||||
|
- run: dotnet build
|
||||||
|
- name: Ensure browsers are installed
|
||||||
|
run: pwsh bin/Debug/net8.0/playwright.ps1 install --with-deps
|
||||||
|
- name: Run your tests
|
||||||
|
run: dotnet test
|
||||||
|
```
|
||||||
|
|
||||||
|
#### On push/pull_request (sharded)
|
||||||
|
* langs: js
|
||||||
|
|
||||||
|
GitHub Actions supports [sharding tests between multiple jobs](https://docs.github.com/en/actions/using-jobs/using-a-matrix-for-your-jobs). Check out our [sharding doc](./test-sharding) to learn more about sharding and to see a [GitHub actions example](./test-sharding.md#github-actions-example) of how to configure a job to run your tests on multiple machines as well as how to merge the HTML reports.
|
||||||
|
|
||||||
|
#### Via Containers
|
||||||
|
|
||||||
|
GitHub Actions support [running jobs in a container](https://docs.github.com/en/actions/using-jobs/running-jobs-in-a-container) by using the [`jobs.<job_id>.container`](https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idcontainer) option. This is useful to not pollute the host environment with dependencies and to have a consistent environment for e.g. screenshots/visual regression testing across different operating systems.
|
||||||
|
|
||||||
|
```yml js title=".github/workflows/playwright.yml"
|
||||||
|
name: Playwright Tests
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [ main, master ]
|
||||||
|
pull_request:
|
||||||
|
branches: [ main, master ]
|
||||||
|
jobs:
|
||||||
|
playwright:
|
||||||
|
name: 'Playwright Tests'
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
container:
|
||||||
|
image: mcr.microsoft.com/playwright:v%%VERSION%%-jammy
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: 18
|
||||||
|
- name: Install dependencies
|
||||||
|
run: npm ci
|
||||||
|
- name: Run your tests
|
||||||
|
run: npx playwright test
|
||||||
|
env:
|
||||||
|
HOME: /root
|
||||||
|
```
|
||||||
|
|
||||||
|
```yml python title=".github/workflows/playwright.yml"
|
||||||
|
name: Playwright Tests
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [ main, master ]
|
||||||
|
pull_request:
|
||||||
|
branches: [ main, master ]
|
||||||
|
jobs:
|
||||||
|
playwright:
|
||||||
|
name: 'Playwright Tests'
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
container:
|
||||||
|
image: mcr.microsoft.com/playwright/python:v%%VERSION%%-jammy
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- name: Set up Python
|
||||||
|
uses: actions/setup-python@v4
|
||||||
|
with:
|
||||||
|
python-version: '3.11'
|
||||||
|
- name: Install dependencies
|
||||||
|
run: |
|
||||||
|
python -m pip install --upgrade pip
|
||||||
|
pip install -r local-requirements.txt
|
||||||
|
pip install -e .
|
||||||
|
- name: Run your tests
|
||||||
|
run: pytest
|
||||||
|
env:
|
||||||
|
HOME: /root
|
||||||
|
```
|
||||||
|
|
||||||
|
```yml java title=".github/workflows/playwright.yml"
|
||||||
|
name: Playwright Tests
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [ main, master ]
|
||||||
|
pull_request:
|
||||||
|
branches: [ main, master ]
|
||||||
|
jobs:
|
||||||
|
playwright:
|
||||||
|
name: 'Playwright Tests'
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
container:
|
||||||
|
image: mcr.microsoft.com/playwright/java:v%%VERSION%%-jammy
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- uses: actions/setup-java@v3
|
||||||
|
with:
|
||||||
|
distribution: 'temurin'
|
||||||
|
java-version: '17'
|
||||||
|
- name: Build & Install
|
||||||
|
run: mvn -B install -D skipTests --no-transfer-progress
|
||||||
|
- name: Run tests
|
||||||
|
run: mvn test
|
||||||
|
env:
|
||||||
|
HOME: /root
|
||||||
|
```
|
||||||
|
|
||||||
|
```yml csharp title=".github/workflows/playwright.yml"
|
||||||
|
name: Playwright Tests
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [ main, master ]
|
||||||
|
pull_request:
|
||||||
|
branches: [ main, master ]
|
||||||
|
jobs:
|
||||||
|
playwright:
|
||||||
|
name: 'Playwright Tests'
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
container:
|
||||||
|
image: mcr.microsoft.com/playwright/dotnet:v%%VERSION%%-jammy
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- name: Setup dotnet
|
||||||
|
uses: actions/setup-dotnet@v4
|
||||||
|
with:
|
||||||
|
dotnet-version: 8.0.x
|
||||||
|
- run: dotnet build
|
||||||
|
- name: Run your tests
|
||||||
|
run: dotnet test
|
||||||
|
env:
|
||||||
|
HOME: /root
|
||||||
|
```
|
||||||
|
|
||||||
|
#### On deployment
|
||||||
|
|
||||||
|
This will start the tests after a [GitHub Deployment](https://developer.github.com/v3/repos/deployments/) went into the `success` state.
|
||||||
|
Services like Vercel use this pattern so you can run your end-to-end tests on their deployed environment.
|
||||||
|
|
||||||
|
```yml js title=".github/workflows/playwright.yml"
|
||||||
|
name: Playwright Tests
|
||||||
|
on:
|
||||||
|
deployment_status:
|
||||||
|
jobs:
|
||||||
|
test:
|
||||||
|
timeout-minutes: 60
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
if: github.event.deployment_status.state == 'success'
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: 18
|
||||||
|
- name: Install dependencies
|
||||||
|
run: npm ci
|
||||||
|
- name: Install Playwright
|
||||||
|
run: npx playwright install --with-deps
|
||||||
|
- name: Run Playwright tests
|
||||||
|
run: npx playwright test
|
||||||
|
env:
|
||||||
|
PLAYWRIGHT_TEST_BASE_URL: ${{ github.event.deployment_status.target_url }}
|
||||||
|
```
|
||||||
|
|
||||||
|
```yml python title=".github/workflows/playwright.yml"
|
||||||
|
name: Playwright Tests
|
||||||
|
on:
|
||||||
|
deployment_status:
|
||||||
|
jobs:
|
||||||
|
test:
|
||||||
|
timeout-minutes: 60
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
if: github.event.deployment_status.state == 'success'
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
uses: actions/setup-python@v4
|
||||||
|
with:
|
||||||
|
python-version: '3.11'
|
||||||
|
- name: Install dependencies
|
||||||
|
run: |
|
||||||
|
python -m pip install --upgrade pip
|
||||||
|
pip install -r requirements.txt
|
||||||
|
- name: Ensure browsers are installed
|
||||||
|
run: python -m playwright install --with-deps
|
||||||
|
- name: Run tests
|
||||||
|
run: pytest
|
||||||
|
env:
|
||||||
|
# This might depend on your test-runner
|
||||||
|
PLAYWRIGHT_TEST_BASE_URL: ${{ github.event.deployment_status.target_url }}
|
||||||
|
```
|
||||||
|
|
||||||
|
```yml java title=".github/workflows/playwright.yml"
|
||||||
|
name: Playwright Tests
|
||||||
|
on:
|
||||||
|
deployment_status:
|
||||||
|
jobs:
|
||||||
|
test:
|
||||||
|
timeout-minutes: 60
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
if: github.event.deployment_status.state == 'success'
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- uses: actions/setup-java@v3
|
||||||
|
with:
|
||||||
|
distribution: 'temurin'
|
||||||
|
java-version: '17'
|
||||||
|
- name: Build & Install
|
||||||
|
run: mvn -B install -D skipTests --no-transfer-progress
|
||||||
|
- name: Install Playwright
|
||||||
|
run: mvn exec:java -e -D exec.mainClass=com.microsoft.playwright.CLI -D exec.args="install --with-deps"
|
||||||
|
- name: Run tests
|
||||||
|
run: mvn test
|
||||||
|
env:
|
||||||
|
# This might depend on your test-runner
|
||||||
|
PLAYWRIGHT_TEST_BASE_URL: ${{ github.event.deployment_status.target_url }}
|
||||||
|
```
|
||||||
|
|
||||||
|
```yml csharp title=".github/workflows/playwright.yml"
|
||||||
|
name: Playwright Tests
|
||||||
|
on:
|
||||||
|
deployment_status:
|
||||||
|
jobs:
|
||||||
|
test:
|
||||||
|
timeout-minutes: 60
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
if: github.event.deployment_status.state == 'success'
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- name: Setup dotnet
|
||||||
|
uses: actions/setup-dotnet@v4
|
||||||
|
with:
|
||||||
|
dotnet-version: 8.0.x
|
||||||
|
- run: dotnet build
|
||||||
|
- name: Ensure browsers are installed
|
||||||
|
run: pwsh bin/Debug/net8.0/playwright.ps1 install --with-deps
|
||||||
|
- name: Run tests
|
||||||
|
run: dotnet test
|
||||||
|
env:
|
||||||
|
# This might depend on your test-runner
|
||||||
|
PLAYWRIGHT_TEST_BASE_URL: ${{ github.event.deployment_status.target_url }}
|
||||||
|
```
|
||||||
|
|
||||||
### Docker
|
### Docker
|
||||||
|
|
||||||
|
|
@ -660,4 +1004,4 @@ xvfb-run mvn test
|
||||||
```
|
```
|
||||||
```bash csharp
|
```bash csharp
|
||||||
xvfb-run dotnet test
|
xvfb-run dotnet test
|
||||||
```
|
```
|
||||||
Loading…
Reference in a new issue