diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json deleted file mode 100644 index b6524c2c49..0000000000 --- a/.devcontainer/devcontainer.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "name": "Playwright", - "image": "mcr.microsoft.com/playwright:next", - "postCreateCommand": "npm install && npm run build && apt-get update && apt-get install -y software-properties-common && curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add - && add-apt-repository \"deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable\" && apt-get install -y docker-ce-cli", - "settings": { - "terminal.integrated.shell.linux": "/bin/bash" - }, - "runArgs": [ - "-v", "/var/run/docker.sock:/var/run/docker.sock" - ] -} \ No newline at end of file diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000000..84a45f6df4 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,14 @@ +version: 2 +updates: + - package-ecosystem: "pip" + directory: "/" + schedule: + interval: "weekly" + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "weekly" + groups: + actions: + patterns: + - "*" diff --git a/.github/workflows/pr_check_client_side_changes.yml b/.github/workflows/pr_check_client_side_changes.yml index 6612845f47..003831dffc 100644 --- a/.github/workflows/pr_check_client_side_changes.yml +++ b/.github/workflows/pr_check_client_side_changes.yml @@ -27,7 +27,11 @@ jobs: repo: context.repo.repo, commit_sha: context.sha, }); - const commitHeader = data.message.split('\n')[0].replace(/#(\d+)/g, 'https://github.com/microsoft/playwright/pull/$1'); + const commitHeader = data.message.split('\n')[0]; + const prMatch = commitHeader.match(/#(\d+)/); + const formattedCommit = prMatch + ? `https://github.com/microsoft/playwright/pull/${prMatch[1]}` + : `https://github.com/${context.repo.owner}/${context.repo.repo}/commit/${context.sha} (${commitHeader})`; const title = '[Ports]: Backport client side changes for ' + currentPlaywrightVersion; for (const repo of ['playwright-python', 'playwright-java', 'playwright-dotnet']) { @@ -50,11 +54,11 @@ jobs: issueBody = issueCreateData.body; } const newBody = issueBody.trimEnd() + ` - - [ ] https://github.com/${context.repo.owner}/${context.repo.repo}/commit/${context.sha} (${commitHeader})`; + - [ ] ${formattedCommit}`; const data = await github.rest.issues.update({ owner: context.repo.owner, repo: repo, issue_number: issueNumber, body: newBody }) - } + } \ No newline at end of file diff --git a/README.md b/README.md index 2f04b28a4f..625e13fb11 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # 🎭 Playwright -[![npm version](https://img.shields.io/npm/v/playwright.svg)](https://www.npmjs.com/package/playwright) [![Chromium version](https://img.shields.io/badge/chromium-132.0.6834.6-blue.svg?logo=google-chrome)](https://www.chromium.org/Home) [![Firefox version](https://img.shields.io/badge/firefox-132.0-blue.svg?logo=firefoxbrowser)](https://www.mozilla.org/en-US/firefox/new/) [![WebKit version](https://img.shields.io/badge/webkit-18.2-blue.svg?logo=safari)](https://webkit.org/) [![Join Discord](https://img.shields.io/badge/join-discord-infomational)](https://aka.ms/playwright/discord) +[![npm version](https://img.shields.io/npm/v/playwright.svg)](https://www.npmjs.com/package/playwright) [![Chromium version](https://img.shields.io/badge/chromium-132.0.6834.15-blue.svg?logo=google-chrome)](https://www.chromium.org/Home) [![Firefox version](https://img.shields.io/badge/firefox-132.0-blue.svg?logo=firefoxbrowser)](https://www.mozilla.org/en-US/firefox/new/) [![WebKit version](https://img.shields.io/badge/webkit-18.2-blue.svg?logo=safari)](https://webkit.org/) [![Join Discord](https://img.shields.io/badge/join-discord-infomational)](https://aka.ms/playwright/discord) ## [Documentation](https://playwright.dev) | [API reference](https://playwright.dev/docs/api/class-playwright) @@ -8,7 +8,7 @@ Playwright is a framework for Web Testing and Automation. It allows testing [Chr | | Linux | macOS | Windows | | :--- | :---: | :---: | :---: | -| Chromium 132.0.6834.6 | :white_check_mark: | :white_check_mark: | :white_check_mark: | +| Chromium 132.0.6834.15 | :white_check_mark: | :white_check_mark: | :white_check_mark: | | WebKit 18.2 | :white_check_mark: | :white_check_mark: | :white_check_mark: | | Firefox 132.0 | :white_check_mark: | :white_check_mark: | :white_check_mark: | diff --git a/docs/src/actionability.md b/docs/src/actionability.md index 4a84f5f5b2..3510171e5c 100644 --- a/docs/src/actionability.md +++ b/docs/src/actionability.md @@ -93,11 +93,20 @@ Element is considered stable when it has maintained the same bounding box for at ## Enabled -Element is considered enabled unless it is a ` + `); await page.$eval('textarea', t => t.readOnly = true); const input1 = page.locator('#input1'); expect(await input1.isEditable()).toBe(false); @@ -130,6 +138,11 @@ it('isEditable should work', async ({ page }) => { const textarea = page.locator('textarea'); expect(await textarea.isEditable()).toBe(false); expect(await page.isEditable('textarea')).toBe(false); + expect(await page.locator('div').isEditable()).toBe(true); + expect(await page.locator('#span1').isEditable()).toBe(false); + expect(await page.locator('#span2').isEditable()).toBe(true); + const error = await page.locator('button').isEditable().catch(e => e); + expect(error.message).toContain('Element is not an ,