Sharded Playwright Example
info
This Workflows functionality is not available when running the Testkube Agent in Standalone Mode - Read More
Testkube has built-in support for parallelizing any testing tool - check out the Parallelization documentation for details and examples.
The below example shows how to distribute ("shard") a set of Playwright tests across a configurable number of nodes and aggregate individual reports into a single report that is available as an artifact.
The example below:
- Load the Git repository with Playwright test (content)
- Install the project dependencies (steps[0].shell)
- Run the Playwright tests split to 2 shards (steps[1].parallel)- Reserve 1 CPU and 1GB RAM for each shard (steps[1].parallel.container.resources)
- Copy the repository and node_modulesinside (steps[1].parallel.transfer)
- Run Playwright test - with blobreporter, and with specific shard segment (steps[1].parallel.shell)
- Fetch the Blob reporter's data to corresponding directory on Execution's pod (steps[1].parallel.fetch)
 
- Reserve 1 CPU and 1GB RAM for each shard (
- Merge the reports using Playwright's tooling (steps[2].shell)
- Save the merged report as an artifact (steps[2].artifacts)
Sharded Playwright Workflow
apiVersion: testworkflows.testkube.io/v1
kind: TestWorkflow
metadata:
  name: example-sharded-playwright-with-merged-report
spec:
  content:
    git:
      uri: https://github.com/kubeshop/testkube
      paths:
        - test/playwright/playwright-project
  container:
    image: mcr.microsoft.com/playwright:v1.38.0-focal
    workingDir: /data/repo/test/playwright/playwright-project
  steps:
    - name: Install dependencies
      shell: 'npm install --save-dev @playwright/test@1.38.0 && npm ci'
    - name: Run tests
      parallel:
        count: 2
        transfer:
          - from: /data/repo
        fetch:
          - from: /data/repo/test/playwright/playwright-project/blob-report
            to: /data/reports
        container:
          resources:
            requests:
              cpu: 1
              memory: 1Gi
        shell: |
          npx playwright test --reporter blob --shard {{ index + 1 }}/{{ count }} --trace on
    - name: Merge reports
      condition: always
      shell: 'npx playwright merge-reports --reporter=html /data/reports'
      artifacts:
        paths:
          - 'playwright-report/**'
- Log Output
- Artifacts
- HTML Report
The log output from the Playwright Framework execution:

The uploaded report is available in the Artifacts tab:

Clicking the HTML report opens it in your browser:
