Move all tests over to electron
This commit is contained in:
		@ -1,59 +0,0 @@
 | 
			
		||||
# bash strict mode
 | 
			
		||||
set -euo pipefail
 | 
			
		||||
 | 
			
		||||
if [[ ! -f "test-results/.last-run.json" ]]; then
 | 
			
		||||
    # if no last run artifact, than run plawright normally
 | 
			
		||||
    echo "run playwright normally"
 | 
			
		||||
    if [[ "$3" == ubuntu-latest* ]]; then
 | 
			
		||||
        yarn test:playwright:browser:chrome:ubuntu -- --shard=$1/$2 || true
 | 
			
		||||
    elif [[ "$3" == windows-latest* ]]; then
 | 
			
		||||
        yarn test:playwright:browser:chrome:windows -- --shard=$1/$2 || true
 | 
			
		||||
    else
 | 
			
		||||
        echo "Do not run playwright. Unable to detect os runtime."
 | 
			
		||||
        exit 1
 | 
			
		||||
    fi
 | 
			
		||||
    # # send to axiom
 | 
			
		||||
    node playwrightProcess.mjs | tee /tmp/github-actions.log > /dev/null 2>&1
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
retry=1
 | 
			
		||||
max_retrys=4
 | 
			
		||||
 | 
			
		||||
# retry failed tests, doing our own retries because using inbuilt playwright retries causes connection issues
 | 
			
		||||
while [[ $retry -le $max_retrys ]]; do
 | 
			
		||||
    if [[ -f "test-results/.last-run.json" ]]; then
 | 
			
		||||
        failed_tests=$(jq '.failedTests | length' test-results/.last-run.json)
 | 
			
		||||
        if [[ $failed_tests -gt 0 ]]; then
 | 
			
		||||
            echo "retried=true" >>$GITHUB_OUTPUT
 | 
			
		||||
            echo "run playwright with last failed tests and retry $retry"
 | 
			
		||||
            if [[ "$3" == ubuntu-latest* ]]; then
 | 
			
		||||
                yarn test:playwright:browser:chrome:ubuntu -- --last-failed || true
 | 
			
		||||
            elif [[ "$3" == windows-latest* ]]; then
 | 
			
		||||
                yarn test:playwright:browser:chrome:windows -- --last-failed || true
 | 
			
		||||
            else
 | 
			
		||||
                echo "Do not run playwright. Unable to detect os runtime."
 | 
			
		||||
                exit 1
 | 
			
		||||
            fi
 | 
			
		||||
            # send to axiom
 | 
			
		||||
            node playwrightProcess.mjs | tee /tmp/github-actions.log > /dev/null 2>&1
 | 
			
		||||
            retry=$((retry + 1))
 | 
			
		||||
        else
 | 
			
		||||
            echo "retried=false" >>$GITHUB_OUTPUT
 | 
			
		||||
            exit 0
 | 
			
		||||
        fi
 | 
			
		||||
    else
 | 
			
		||||
        echo "retried=false" >>$GITHUB_OUTPUT
 | 
			
		||||
        exit 0
 | 
			
		||||
    fi
 | 
			
		||||
done
 | 
			
		||||
 | 
			
		||||
echo "retried=false" >>$GITHUB_OUTPUT
 | 
			
		||||
 | 
			
		||||
if [[ -f "test-results/.last-run.json" ]]; then
 | 
			
		||||
    failed_tests=$(jq '.failedTests | length' test-results/.last-run.json)
 | 
			
		||||
    if [[ $failed_tests -gt 0 ]]; then
 | 
			
		||||
        # if it still fails after 3 retrys, then fail the job
 | 
			
		||||
        exit 1
 | 
			
		||||
    fi
 | 
			
		||||
fi
 | 
			
		||||
exit 0
 | 
			
		||||
							
								
								
									
										6
									
								
								.github/ci-cd-scripts/playwright-electron.sh
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								.github/ci-cd-scripts/playwright-electron.sh
									
									
									
									
										vendored
									
									
								
							@ -5,11 +5,11 @@ if [[ ! -f "test-results/.last-run.json" ]]; then
 | 
			
		||||
    # if no last run artifact, than run plawright normally
 | 
			
		||||
    echo "run playwright normally"
 | 
			
		||||
        if [[ "$1" == ubuntu-latest* ]]; then
 | 
			
		||||
            xvfb-run --auto-servernum --server-args="-screen 0 1280x960x24" -- yarn test:playwright:electron:ubuntu || true
 | 
			
		||||
            xvfb-run --auto-servernum --server-args="-screen 0 1280x960x24" -- yarn test:playwright:electron:ubuntu -- --shard=$1/$2 || true
 | 
			
		||||
        elif [[ "$1" == windows-latest* ]]; then
 | 
			
		||||
            yarn test:playwright:electron:windows || true
 | 
			
		||||
            yarn test:playwright:electron:windows -- --shard=$1/$2 || true
 | 
			
		||||
        elif [[ "$1" == macos-14* ]]; then
 | 
			
		||||
            yarn test:playwright:electron:macos || true
 | 
			
		||||
            yarn test:playwright:electron:macos  -- --shard=$1/$2 || true
 | 
			
		||||
        else
 | 
			
		||||
            echo "Do not run playwright. Unable to detect os runtime."
 | 
			
		||||
            exit 1
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										152
									
								
								.github/workflows/e2e-tests.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										152
									
								
								.github/workflows/e2e-tests.yml
									
									
									
									
										vendored
									
									
								
							@ -33,9 +33,9 @@ jobs:
 | 
			
		||||
            rust:
 | 
			
		||||
              - 'src/wasm-lib/**'
 | 
			
		||||
 | 
			
		||||
  browser:
 | 
			
		||||
  electron:
 | 
			
		||||
    timeout-minutes: ${{ matrix.os == 'macos-14' && 60 || 50 }}
 | 
			
		||||
    name: playwright:browser:${{ matrix.os }} ${{ matrix.shardIndex }} ${{ matrix.shardTotal }}
 | 
			
		||||
    name: playwright:electron:${{ matrix.os }} ${{ matrix.shardIndex }} ${{ matrix.shardTotal }}
 | 
			
		||||
    strategy:
 | 
			
		||||
      fail-fast: false
 | 
			
		||||
      matrix:
 | 
			
		||||
@ -123,13 +123,13 @@ jobs:
 | 
			
		||||
      if: steps.download-wasm.outcome == 'failure'
 | 
			
		||||
      shell: bash
 | 
			
		||||
      run: yarn build:wasm
 | 
			
		||||
    - name: build web
 | 
			
		||||
      run: yarn build:local
 | 
			
		||||
    - name: build electron
 | 
			
		||||
      shell: bash
 | 
			
		||||
      run: yarn tron:package
 | 
			
		||||
    - name: Run ubuntu/chrome snapshots
 | 
			
		||||
      shell: bash
 | 
			
		||||
      run: |
 | 
			
		||||
        yarn playwright test --project="Google Chrome" --config=playwright.ci.config.ts --retries="3" --update-snapshots --grep=@snapshot  --shard=${{ matrix.shardIndex }}/${{ matrix.shardTotal }}
 | 
			
		||||
        yarn playwright test --config=playwright.electron.config.ts --retries="3" --update-snapshots --grep=@snapshot  --shard=${{ matrix.shardIndex }}/${{ matrix.shardTotal }}
 | 
			
		||||
      env:
 | 
			
		||||
        CI: true
 | 
			
		||||
        NODE_ENV: development
 | 
			
		||||
@ -186,12 +186,12 @@ jobs:
 | 
			
		||||
      with:
 | 
			
		||||
        name: test-results-${{ matrix.os }}-${{ matrix.shardIndex }}-${{ github.sha }}
 | 
			
		||||
        path: test-results/
 | 
			
		||||
    - name: Run playwright/chrome flow (with retries)
 | 
			
		||||
    - name: Run playwright/electron flow (with retries)
 | 
			
		||||
      id: retry
 | 
			
		||||
      if: ${{ !cancelled() && (success() || failure()) }}
 | 
			
		||||
      shell: bash
 | 
			
		||||
      run: |
 | 
			
		||||
        .github/ci-cd-scripts/playwright-browser-chrome.sh ${{matrix.shardIndex}} ${{matrix.shardTotal}} ${{matrix.os}}
 | 
			
		||||
        .github/ci-cd-scripts/playwright-electron.sh ${{matrix.shardIndex}} ${{matrix.shardTotal}} ${{matrix.os}}
 | 
			
		||||
      env:
 | 
			
		||||
        CI: true
 | 
			
		||||
        FAIL_ON_CONSOLE_ERRORS: true
 | 
			
		||||
@ -199,11 +199,6 @@ jobs:
 | 
			
		||||
        VITE_KC_DEV_TOKEN: ${{ secrets.KITTYCAD_API_TOKEN_DEV }}
 | 
			
		||||
        VITE_KC_SKIP_AUTH: true
 | 
			
		||||
        token: ${{ secrets.KITTYCAD_API_TOKEN_DEV }}
 | 
			
		||||
    - name: send to axiom
 | 
			
		||||
      if: always()
 | 
			
		||||
      shell: bash
 | 
			
		||||
      run: |
 | 
			
		||||
        node playwrightProcess.mjs | tee /tmp/github-actions.log
 | 
			
		||||
    - uses: actions/upload-artifact@v4
 | 
			
		||||
      if: always()
 | 
			
		||||
      with:
 | 
			
		||||
@ -221,136 +216,3 @@ jobs:
 | 
			
		||||
        retention-days: 30
 | 
			
		||||
        overwrite: true
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  electron:
 | 
			
		||||
    name: playwright:electron:${{matrix.os}}
 | 
			
		||||
    strategy:
 | 
			
		||||
      fail-fast: false
 | 
			
		||||
      matrix:
 | 
			
		||||
        os: [ubuntu-latest-8-cores, windows-latest-8-cores, macos-14-large]
 | 
			
		||||
    timeout-minutes: 60
 | 
			
		||||
    runs-on: ${{ matrix.os }}
 | 
			
		||||
    needs: check-rust-changes
 | 
			
		||||
    steps:
 | 
			
		||||
    - name: Tune GitHub-hosted runner network
 | 
			
		||||
      uses: smorimoto/tune-github-hosted-runner-network@v1
 | 
			
		||||
    - uses: actions/checkout@v4
 | 
			
		||||
    - uses: actions/setup-node@v4
 | 
			
		||||
      with:
 | 
			
		||||
        node-version-file: '.nvmrc'
 | 
			
		||||
        cache: 'yarn'
 | 
			
		||||
    - uses: KittyCAD/action-install-cli@main
 | 
			
		||||
    - name: Install dependencies
 | 
			
		||||
      shell: bash
 | 
			
		||||
      run: yarn
 | 
			
		||||
    - name: Cache Playwright Browsers
 | 
			
		||||
      uses: actions/cache@v4
 | 
			
		||||
      with:
 | 
			
		||||
        path: |
 | 
			
		||||
          ~/.cache/ms-playwright/
 | 
			
		||||
        key: ${{ runner.os }}-playwright-${{ hashFiles('yarn.lock') }}
 | 
			
		||||
    - name: Install Playwright Browsers
 | 
			
		||||
      shell: bash
 | 
			
		||||
      run: yarn playwright install chromium --with-deps
 | 
			
		||||
    - name: Download Wasm Cache
 | 
			
		||||
      id: download-wasm
 | 
			
		||||
      if: needs.check-rust-changes.outputs.rust-changed == 'false'
 | 
			
		||||
      uses: dawidd6/action-download-artifact@v6
 | 
			
		||||
      continue-on-error: true
 | 
			
		||||
      with:
 | 
			
		||||
        github_token: ${{secrets.GITHUB_TOKEN}}
 | 
			
		||||
        name: wasm-bundle
 | 
			
		||||
        workflow: build-and-store-wasm.yml
 | 
			
		||||
        branch: main
 | 
			
		||||
        path: src/wasm-lib/pkg
 | 
			
		||||
    - name: copy wasm blob
 | 
			
		||||
      if: needs.check-rust-changes.outputs.rust-changed == 'false'
 | 
			
		||||
      shell: bash
 | 
			
		||||
      run: cp src/wasm-lib/pkg/wasm_lib_bg.wasm public
 | 
			
		||||
      continue-on-error: true
 | 
			
		||||
    - name: Setup Rust
 | 
			
		||||
      uses: dtolnay/rust-toolchain@stable
 | 
			
		||||
    - name: Cache Wasm (because rust diff)
 | 
			
		||||
      if: needs.check-rust-changes.outputs.rust-changed == 'true'
 | 
			
		||||
      uses: Swatinem/rust-cache@v2
 | 
			
		||||
      with:
 | 
			
		||||
        workspaces: './src/wasm-lib'
 | 
			
		||||
    - name: OR Cache Wasm (because wasm cache failed)
 | 
			
		||||
      if: steps.download-wasm.outcome == 'failure'
 | 
			
		||||
      uses: Swatinem/rust-cache@v2
 | 
			
		||||
      with:
 | 
			
		||||
        workspaces: './src/wasm-lib'
 | 
			
		||||
    - name: install good sed
 | 
			
		||||
      if:  ${{ startsWith(matrix.os, 'macos') }}
 | 
			
		||||
      shell: bash
 | 
			
		||||
      run: |
 | 
			
		||||
        brew install gnu-sed
 | 
			
		||||
        echo "/opt/homebrew/opt/gnu-sed/libexec/gnubin" >> $GITHUB_PATH
 | 
			
		||||
    - name: Install vector
 | 
			
		||||
      if:  ${{ startsWith(matrix.os, 'ubuntu') }}
 | 
			
		||||
      shell: bash
 | 
			
		||||
      run: |
 | 
			
		||||
        curl --proto '=https' --tlsv1.2 -sSfL https://sh.vector.dev > /tmp/vector.sh
 | 
			
		||||
        chmod +x /tmp/vector.sh
 | 
			
		||||
        /tmp/vector.sh -y -no-modify-path
 | 
			
		||||
        mkdir -p /tmp/vector
 | 
			
		||||
        cp .github/workflows/vector.toml /tmp/vector.toml
 | 
			
		||||
        sed -i "s#GITHUB_WORKFLOW#${GITHUB_WORKFLOW}#g" /tmp/vector.toml
 | 
			
		||||
        sed -i "s#GITHUB_REPOSITORY#${GITHUB_REPOSITORY}#g" /tmp/vector.toml
 | 
			
		||||
        sed -i "s#GITHUB_SHA#${GITHUB_SHA}#g" /tmp/vector.toml
 | 
			
		||||
        sed -i "s#GITHUB_REF_NAME#${GITHUB_REF_NAME}#g" /tmp/vector.toml
 | 
			
		||||
        sed -i "s#GH_ACTIONS_AXIOM_TOKEN#${{secrets.GH_ACTIONS_AXIOM_TOKEN}}#g" /tmp/vector.toml
 | 
			
		||||
        cat /tmp/vector.toml
 | 
			
		||||
        ${HOME}/.vector/bin/vector --config /tmp/vector.toml &
 | 
			
		||||
    - name: Build Wasm (because rust diff)
 | 
			
		||||
      if: needs.check-rust-changes.outputs.rust-changed == 'true'
 | 
			
		||||
      shell: bash
 | 
			
		||||
      run: yarn build:wasm
 | 
			
		||||
    - name: OR Build Wasm (because wasm cache failed)
 | 
			
		||||
      if: steps.download-wasm.outcome == 'failure'
 | 
			
		||||
      shell: bash
 | 
			
		||||
      run: yarn build:wasm
 | 
			
		||||
    - name: build electron
 | 
			
		||||
      shell: bash
 | 
			
		||||
      run: yarn tron:package
 | 
			
		||||
    - uses: actions/download-artifact@v4
 | 
			
		||||
      if: ${{ !cancelled() && (success() || failure()) }}
 | 
			
		||||
      continue-on-error: true
 | 
			
		||||
      with:
 | 
			
		||||
        name: test-results-electron-${{ matrix.os }}-${{ github.sha }}
 | 
			
		||||
        path: test-results/
 | 
			
		||||
    - name: Run electron tests (with retries)
 | 
			
		||||
      id: retry
 | 
			
		||||
      if: ${{ !cancelled() && (success() || failure()) }}
 | 
			
		||||
      shell: bash
 | 
			
		||||
      run: |
 | 
			
		||||
        .github/ci-cd-scripts/playwright-electron.sh ${{ matrix.os }}
 | 
			
		||||
      env:
 | 
			
		||||
        CI: true
 | 
			
		||||
        FAIL_ON_CONSOLE_ERRORS: true
 | 
			
		||||
        NODE_ENV: development
 | 
			
		||||
        VITE_KC_DEV_TOKEN: ${{ secrets.KITTYCAD_API_TOKEN_DEV }}
 | 
			
		||||
        VITE_KC_SKIP_AUTH: true
 | 
			
		||||
        IS_UBUNTU: ${{ startsWith(matrix.os, 'ubuntu') && 'true' || 'false' }}
 | 
			
		||||
        #DEBUG: 'pw:browser*'
 | 
			
		||||
    - name: send to axiom
 | 
			
		||||
      if: ${{ !cancelled() && (success() || failure()) && !startsWith(matrix.os, 'windows') }}
 | 
			
		||||
      shell: bash
 | 
			
		||||
      run: |
 | 
			
		||||
        node playwrightProcess.mjs | tee /tmp/github-actions.log
 | 
			
		||||
    - uses: actions/upload-artifact@v4
 | 
			
		||||
      if: ${{ !cancelled() && (success() || failure()) }}
 | 
			
		||||
      with:
 | 
			
		||||
        name: test-results-electron-${{ matrix.os }}-${{ github.sha }}
 | 
			
		||||
        path: test-results/
 | 
			
		||||
        include-hidden-files: true
 | 
			
		||||
        retention-days: 30
 | 
			
		||||
        overwrite: true
 | 
			
		||||
    - uses: actions/upload-artifact@v4
 | 
			
		||||
      if: ${{ !cancelled() && (success() || failure()) }}
 | 
			
		||||
      with:
 | 
			
		||||
        name: playwright-report-electron-${{ matrix.os }}-${{ github.sha }}
 | 
			
		||||
        path: playwright-report/
 | 
			
		||||
        include-hidden-files: true
 | 
			
		||||
        retention-days: 30
 | 
			
		||||
        overwrite: true
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										17
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										17
									
								
								README.md
									
									
									
									
									
								
							@ -397,23 +397,6 @@ yarn test:unit:local
 | 
			
		||||
 | 
			
		||||
#### E2E Tests
 | 
			
		||||
 | 
			
		||||
**Playwright Browser**
 | 
			
		||||
 | 
			
		||||
These E2E tests run in a browser (without electron).
 | 
			
		||||
There are tests that are skipped if they are ran in a windows OS or Linux OS. We can use playwright tags to implement test skipping.
 | 
			
		||||
 | 
			
		||||
Breaking down the command `yarn test:playwright:browser:chrome:windows`
 | 
			
		||||
- The application is `playwright`
 | 
			
		||||
- The runtime is a `browser`
 | 
			
		||||
- The specific `browser` is `chrome`
 | 
			
		||||
- The test should run in a `windows` environment. It will skip tests that are broken or flaky in the windows OS.
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
yarn test:playwright:browser:chrome
 | 
			
		||||
yarn test:playwright:browser:chrome:windows
 | 
			
		||||
yarn test:playwright:browser:chrome:ubuntu
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
**Playwright Electron**
 | 
			
		||||
 | 
			
		||||
These E2E tests run in electron. There are tests that are skipped if they are ran in a windows, linux, or macos environment. We can use playwright tags to implement test skipping.
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										19
									
								
								package.json
									
									
									
									
									
								
							
							
						
						
									
										19
									
								
								package.json
									
									
									
									
									
								
							@ -108,17 +108,14 @@
 | 
			
		||||
    "test": "vitest --mode development",
 | 
			
		||||
    "test:unit": "vitest run --mode development --exclude **/kclSamples.test.ts",
 | 
			
		||||
    "test:unit:kcl-samples": "vitest run --mode development ./src/lang/kclSamples.test.ts",
 | 
			
		||||
    "test:playwright:browser:chrome": "playwright test --project='Google Chrome' --config=playwright.ci.config.ts --grep-invert='@snapshot|@electron'",
 | 
			
		||||
    "test:playwright:browser:chrome:windows": "playwright test --project=\"Google Chrome\" --config=playwright.ci.config.ts --grep-invert=\"@snapshot|@electron|@skipWin\"",
 | 
			
		||||
    "test:playwright:browser:chrome:ubuntu": "playwright test --project='Google Chrome' --config=playwright.ci.config.ts --grep-invert='@snapshot|@electron|@skipLinux'",
 | 
			
		||||
    "test:playwright:electron": "playwright test --config=playwright.electron.config.ts --grep=@electron",
 | 
			
		||||
    "test:playwright:electron:windows": "playwright test --config=playwright.electron.config.ts --grep=@electron --grep-invert=@skipWin",
 | 
			
		||||
    "test:playwright:electron:macos": "playwright test --config=playwright.electron.config.ts --grep=@electron --grep-invert=@skipMacos",
 | 
			
		||||
    "test:playwright:electron:ubuntu": "playwright test --config=playwright.electron.config.ts --grep=@electron --grep-invert=@skipLinux",
 | 
			
		||||
    "test:playwright:electron:local": "yarn tron:package && NODE_ENV=development playwright test --config=playwright.electron.config.ts --grep=@electron",
 | 
			
		||||
    "test:playwright:electron:windows:local": "yarn tron:package && NODE_ENV=development playwright test --config=playwright.electron.config.ts --grep=@electron --grep-invert=@skipWin",
 | 
			
		||||
    "test:playwright:electron:macos:local": "yarn tron:package && NODE_ENV=development playwright test --config=playwright.electron.config.ts --grep=@electron --grep-invert=@skipMacos",
 | 
			
		||||
    "test:playwright:electron:ubuntu:local": "yarn tron:package && NODE_ENV=development playwright test --config=playwright.electron.config.ts --grep=@electron --grep-invert=@skipLinux",
 | 
			
		||||
    "test:playwright:electron": "playwright test --config=playwright.electron.config.ts --grep-invert='@snapshot'",
 | 
			
		||||
    "test:playwright:electron:windows": "playwright test --config=playwright.electron.config.ts --grep-invert='@skipWin|@snapshot'",
 | 
			
		||||
    "test:playwright:electron:macos": "playwright test --config=playwright.electron.config.ts --grep-invert='@skipMacos|@snapshot'",
 | 
			
		||||
    "test:playwright:electron:ubuntu": "playwright test --config=playwright.electron.config.ts --grep-invert='@skipLinux|@snapshot'",
 | 
			
		||||
    "test:playwright:electron:local": "yarn tron:package && NODE_ENV=development playwright test --config=playwright.electron.config.ts --grep-invert='@snapshot'",
 | 
			
		||||
    "test:playwright:electron:windows:local": "yarn tron:package && NODE_ENV=development playwright test --config=playwright.electron.config.ts --grep-invert='@skipWin|@snapshot'",
 | 
			
		||||
    "test:playwright:electron:macos:local": "yarn tron:package && NODE_ENV=development playwright test --config=playwright.electron.config.ts --grep-invert='@skipMacos|@snapshot'",
 | 
			
		||||
    "test:playwright:electron:ubuntu:local": "yarn tron:package && NODE_ENV=development playwright test --config=playwright.electron.config.ts --grep-invert='@skipLinux|@snapshot'",
 | 
			
		||||
    "test:unit:local": "yarn simpleserver:bg && yarn test:unit; kill-port 3000",
 | 
			
		||||
    "test:unit:kcl-samples:local": "yarn simpleserver:bg && yarn test:unit:kcl-samples; kill-port 3000"
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
@ -1,58 +0,0 @@
 | 
			
		||||
import { defineConfig, devices } from '@playwright/test'
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * See https://playwright.dev/docs/test-configuration.
 | 
			
		||||
 */
 | 
			
		||||
export default defineConfig({
 | 
			
		||||
  timeout: 120_000, // override the default 30s timeout
 | 
			
		||||
  testDir: './e2e/playwright',
 | 
			
		||||
  /* Run tests in files in parallel */
 | 
			
		||||
  fullyParallel: true,
 | 
			
		||||
  /* Fail the build on CI if you accidentally left test.only in the source code. */
 | 
			
		||||
  forbidOnly: true,
 | 
			
		||||
  /* Do not retry */
 | 
			
		||||
  retries: 0,
 | 
			
		||||
  /* Different amount of parallelism on CI and local. */
 | 
			
		||||
  workers: 1,
 | 
			
		||||
  /* Reporter to use. See https://playwright.dev/docs/test-reporters */
 | 
			
		||||
  reporter: [
 | 
			
		||||
    ['dot'],
 | 
			
		||||
    ['list'],
 | 
			
		||||
    ['json', { outputFile: './test-results/report.json' }],
 | 
			
		||||
    ['html'],
 | 
			
		||||
  ],
 | 
			
		||||
  /* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */
 | 
			
		||||
  use: {
 | 
			
		||||
    /* Base URL to use in actions like `await page.goto('/')`. */
 | 
			
		||||
    baseURL: 'http://localhost:3000',
 | 
			
		||||
 | 
			
		||||
    /* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */
 | 
			
		||||
    trace: 'retain-on-failure',
 | 
			
		||||
    actionTimeout: 15_000,
 | 
			
		||||
    screenshot: 'only-on-failure',
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  /* Configure projects for major browsers */
 | 
			
		||||
  projects: [
 | 
			
		||||
    {
 | 
			
		||||
      name: 'Google Chrome',
 | 
			
		||||
      use: {
 | 
			
		||||
        ...devices['Desktop Chrome'],
 | 
			
		||||
        channel: 'chrome',
 | 
			
		||||
        contextOptions: {
 | 
			
		||||
          /* Chromium is the only one with these permission types */
 | 
			
		||||
          permissions: ['clipboard-write', 'clipboard-read'],
 | 
			
		||||
        },
 | 
			
		||||
      }, // or 'chrome-beta'
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      name: 'webkit',
 | 
			
		||||
      use: { ...devices['Desktop Safari'] },
 | 
			
		||||
    },
 | 
			
		||||
  ],
 | 
			
		||||
 | 
			
		||||
  webServer: {
 | 
			
		||||
    command: 'yarn start',
 | 
			
		||||
    reuseExistingServer: false,
 | 
			
		||||
  },
 | 
			
		||||
})
 | 
			
		||||
		Reference in New Issue
	
	Block a user