diff --git a/.azure-pipelines/publish-docker.yml b/.azure-pipelines/publish-docker.yml new file mode 100644 index 0000000000000..4c089b2aa6293 --- /dev/null +++ b/.azure-pipelines/publish-docker.yml @@ -0,0 +1,96 @@ +# Trigger: any `v*` release tag (e.g. v1.40.0). +# Can also be queued manually from the ADO UI. +trigger: + tags: + include: + - v* + exclude: + - v*-* + +pr: none + +parameters: +- name: releaseChannel + displayName: "IMPORTANT: set this to 'canary' when triggering manually" + type: string + default: stable + values: + - stable + - canary + +resources: + repositories: + - repository: 1esPipelines + type: git + name: 1ESPipelineTemplates/1ESPipelineTemplates + ref: refs/tags/release + +extends: + template: v1/1ES.Official.PipelineTemplate.yml@1esPipelines + parameters: + pool: + name: DevDivPlaywrightAzurePipelinesUbuntu2204 + os: linux + sdl: + sourceAnalysisPool: + name: DevDivPlaywrightAzurePipelinesWindows2022 + # The image must be windows-based due to restrictions of the SDL tools. See: https://aka.ms/AAo6v8e + os: windows + stages: + - stage: Publish + jobs: + - job: PublishDocker + displayName: "Publish Docker images to ACR" + # arm64 images are cross-built under QEMU emulation, which is slow. + timeoutInMinutes: 360 + steps: + - checkout: self + fetchDepth: 0 + displayName: "Checkout code" + + - task: UseNode@1 + inputs: + version: '22.x' + displayName: "Install Node.js" + + # Relocate the Docker data-root to the large /mnt volume: this job builds + # 6 images (jammy/noble/resolute x amd64/arm64) and `docker system prune`s + # between them, so the default disk fills up. + - task: Bash@3 + displayName: "Setup docker" + inputs: + targetType: "inline" + script: | + set -x + sudo service docker stop + sudo mkdir -p /etc/docker + echo '{ "data-root": "/mnt/docker" }' | sudo tee /etc/docker/daemon.json + sudo service docker start + + # Register QEMU/binfmt handlers so `docker build --platform linux/arm64` + # works on the amd64 host. Equivalent to docker/setup-qemu-action@v4. + - task: Bash@3 + displayName: "Set up QEMU for arm64 builds" + inputs: + targetType: "inline" + script: docker run --privileged --rm tonistiigi/binfmt --install arm64 + + - script: npm ci + displayName: "npm ci" + + - script: npm run build + displayName: "npm run build" + + - task: AzureCLI@2 + displayName: "Login to ACR via OIDC" + inputs: + azureSubscription: "Playwright-CDN" + scriptType: "bash" + scriptLocation: "inlineScript" + inlineScript: "az acr login --name playwright" + + - task: Bash@3 + displayName: "Build & publish Docker images" + inputs: + targetType: "inline" + script: "./utils/docker/publish_docker.sh ${{ parameters.releaseChannel }}" diff --git a/.github/workflows/publish_release.yml b/.github/workflows/publish_release.yml index 07eb51e35d67c..aed173fb6ee4c 100644 --- a/.github/workflows/publish_release.yml +++ b/.github/workflows/publish_release.yml @@ -1,4 +1,4 @@ -name: "publish release - npm, driver, trace viewer" +name: "publish release - npm, trace viewer" on: workflow_dispatch: @@ -11,14 +11,13 @@ on: types: [published] jobs: - publish-npm-and-driver: - name: "publish NPM and driver" + publish-npm: + name: "publish NPM" runs-on: ubuntu-24.04 if: github.repository == 'microsoft/playwright' permissions: - id-token: write # This is required for OIDC login (azure/login, NPM publish) to succeed + id-token: write # This is required for OIDC login (NPM publish) to succeed contents: read # This is required for actions/checkout to succeed - environment: allow-publish-driver-to-cdn # This is required for OIDC login (azure/login) steps: - uses: actions/checkout@v6 - uses: actions/setup-node@v6 @@ -50,19 +49,6 @@ jobs: if: github.event_name == 'release' && github.event.action == 'published' run: utils/publish_all_packages.sh --release - - name: Azure Login - uses: azure/login@v3 - with: - client-id: ${{ secrets.AZURE_PW_CDN_CLIENT_ID }} - tenant-id: ${{ secrets.AZURE_PW_CDN_TENANT_ID }} - subscription-id: ${{ secrets.AZURE_PW_CDN_SUBSCRIPTION_ID }} - - name: build & publish driver - env: - AZ_UPLOAD_FOLDER: ${{ github.event_name == 'release' && 'driver' || 'driver/next' }} - run: | - utils/build/build-playwright-driver.sh - utils/build/upload-playwright-driver.sh - publish-trace-viewer: name: "publish Trace Viewer to trace.playwright.dev" runs-on: ubuntu-24.04 diff --git a/.github/workflows/tests_secondary.yml b/.github/workflows/tests_secondary.yml index a32354c87d26e..ebd3a5b4c5aa0 100644 --- a/.github/workflows/tests_secondary.yml +++ b/.github/workflows/tests_secondary.yml @@ -179,18 +179,6 @@ jobs: env: PWTEST_CHANNEL: ${{ matrix.channel }} - build-playwright-driver: - name: "build-playwright-driver" - runs-on: ubuntu-24.04 - steps: - - uses: actions/checkout@v6 - - uses: actions/setup-node@v6 - with: - node-version: 20 - - run: npm ci - - run: npm run build - - run: utils/build/build-playwright-driver.sh - test_android: name: Android environment: ${{ github.event_name == 'push' && 'allow-uploading-flakiness-results' || null }} diff --git a/docs/src/api/class-elementhandle.md b/docs/src/api/class-elementhandle.md index 10a862cfcf77f..a14f91156a7de 100644 --- a/docs/src/api/class-elementhandle.md +++ b/docs/src/api/class-elementhandle.md @@ -191,6 +191,8 @@ When all steps combined have not finished during the specified [`option: timeout ### option: ElementHandle.check.timeout = %%-input-timeout-js-%% * since: v1.8 +### option: ElementHandle.check.signal = %%-input-signal-%% + ### option: ElementHandle.check.trial = %%-input-trial-%% * since: v1.11 @@ -239,6 +241,8 @@ When all steps combined have not finished during the specified [`option: timeout ### option: ElementHandle.click.timeout = %%-input-timeout-js-%% * since: v1.8 +### option: ElementHandle.click.signal = %%-input-signal-%% + ### option: ElementHandle.click.trial = %%-input-trial-%% * since: v1.11 @@ -298,6 +302,8 @@ When all steps combined have not finished during the specified [`option: timeout ### option: ElementHandle.dblclick.timeout = %%-input-timeout-js-%% * since: v1.8 +### option: ElementHandle.dblclick.signal = %%-input-signal-%% + ### option: ElementHandle.dblclick.trial = %%-input-trial-%% * since: v1.11 @@ -560,6 +566,8 @@ Value to set for the ``, `