diff --git a/dotnet/docs/api/class-apirequest.mdx b/dotnet/docs/api/class-apirequest.mdx
index aa22e5382cc..40305068094 100644
--- a/dotnet/docs/api/class-apirequest.mdx
+++ b/dotnet/docs/api/class-apirequest.mdx
@@ -95,6 +95,9 @@ await ApiRequest.NewContextAsync(options);
- `IgnoreHTTPSErrors` [bool]? *(optional)*#
Whether to ignore HTTPS errors when sending network requests. Defaults to `false`.
+ - `MaxRedirects` [int]? *(optional)* Added in: v1.52#
+
+ Maximum number of request redirects that will be followed automatically. An error will be thrown if the number is exceeded. Defaults to `20`. Pass `0` to not follow redirects. This can be overwritten for each request individually.
- `Proxy` Proxy? *(optional)*#
- `Server` [string]
diff --git a/dotnet/docs/api/class-browsertype.mdx b/dotnet/docs/api/class-browsertype.mdx
index 0f61067bfb7..e2349ec5d09 100644
--- a/dotnet/docs/api/class-browsertype.mdx
+++ b/dotnet/docs/api/class-browsertype.mdx
@@ -272,7 +272,11 @@ await BrowserType.LaunchPersistentContextAsync(userDataDir, options);
**Arguments**
- `userDataDir` [string]#
- Path to a User Data Directory, which stores browser session data like cookies and local storage. More details for [Chromium](https://chromium.googlesource.com/chromium/src/+/master/docs/user_data_dir.md#introduction) and [Firefox](https://wiki.mozilla.org/Firefox/CommandLineOptions#User_profile). Note that Chromium's user data directory is the **parent** directory of the "Profile Path" seen at `chrome://version`. Pass an empty string to use a temporary directory instead.
+ Path to a User Data Directory, which stores browser session data like cookies and local storage. Pass an empty string to create a temporary directory.
+
+ More details for [Chromium](https://chromium.googlesource.com/chromium/src/+/master/docs/user_data_dir.md#introduction) and [Firefox](https://wiki.mozilla.org/Firefox/CommandLineOptions#User_profile). Chromium's user data directory is the **parent** directory of the "Profile Path" seen at `chrome://version`.
+
+ Note that browsers do not allow launching multiple instances with the same User Data Directory.
- `options` `BrowserTypeLaunchPersistentContextOptions?` *(optional)*
- `AcceptDownloads` [bool]? *(optional)*#
diff --git a/dotnet/docs/ci-intro.mdx b/dotnet/docs/ci-intro.mdx
index 7a10196b264..14b6d6e444b 100644
--- a/dotnet/docs/ci-intro.mdx
+++ b/dotnet/docs/ci-intro.mdx
@@ -47,7 +47,11 @@ jobs:
To learn more about this, see ["Understanding GitHub Actions"](https://docs.github.com/en/actions/learn-github-actions/understanding-github-actions).
Looking at the list of steps in `jobs.test.steps`, you can see that the workflow performs these steps:
-1. Clone your repository 2. Install language dependencies 3. Install project dependencies and build 4. Install Playwright Browsers 5. Run tests
+1. Clone your repository
+1. Install language dependencies
+1. Install project dependencies and build
+1. Install Playwright Browsers
+1. Run tests
## Create a Repo and Push to GitHub
diff --git a/dotnet/docs/ci.mdx b/dotnet/docs/ci.mdx
index 844c26ae0a7..3723636e39c 100644
--- a/dotnet/docs/ci.mdx
+++ b/dotnet/docs/ci.mdx
@@ -76,7 +76,7 @@ jobs:
name: 'Playwright Tests'
runs-on: ubuntu-latest
container:
- image: mcr.microsoft.com/playwright/dotnet:v1.50.0-noble
+ image: mcr.microsoft.com/playwright/dotnet:v1.51.0-noble
options: --user 1001
steps:
- uses: actions/checkout@v4
@@ -159,7 +159,7 @@ trigger:
pool:
vmImage: ubuntu-latest
-container: mcr.microsoft.com/playwright/dotnet:v1.50.0-noble
+container: mcr.microsoft.com/playwright/dotnet:v1.51.0-noble
steps:
- task: UseDotNet@2
@@ -182,7 +182,7 @@ Running Playwright on CircleCI is very similar to running on GitHub Actions. In
executors:
pw-noble-development:
docker:
- - image: mcr.microsoft.com/playwright/dotnet:v1.50.0-noble
+ - image: mcr.microsoft.com/playwright/dotnet:v1.51.0-noble
```
Note: When using the docker agent definition, you are specifying the resource class of where playwright runs to the 'medium' tier [here](https://circleci.com/docs/configuration-reference?#docker-execution-environment). The default behavior of Playwright is to set the number of workers to the detected core count (2 in the case of the medium tier). Overriding the number of workers to greater than this number will cause unnecessary timeouts and failures.
@@ -193,7 +193,7 @@ Jenkins supports Docker agents for pipelines. Use the [Playwright Docker image](
```groovy
pipeline {
- agent { docker { image 'mcr.microsoft.com/playwright/dotnet:v1.50.0-noble' } }
+ agent { docker { image 'mcr.microsoft.com/playwright/dotnet:v1.51.0-noble' } }
stages {
stage('e2e-tests') {
steps {
@@ -210,7 +210,7 @@ pipeline {
Bitbucket Pipelines can use public [Docker images as build environments](https://confluence.atlassian.com/bitbucket/use-docker-images-as-build-environments-792298897.html). To run Playwright tests on Bitbucket, use our public Docker image ([see Dockerfile](./docker.mdx)).
```yml
-image: mcr.microsoft.com/playwright/dotnet:v1.50.0-noble
+image: mcr.microsoft.com/playwright/dotnet:v1.51.0-noble
```
### GitLab CI
diff --git a/dotnet/docs/docker.mdx b/dotnet/docs/docker.mdx
index 9d96bd50a21..5fb00125d30 100644
--- a/dotnet/docs/docker.mdx
+++ b/dotnet/docs/docker.mdx
@@ -22,7 +22,7 @@ This Docker image is intended to be used for testing and development purposes on
### Pull the image
```bash
-docker pull mcr.microsoft.com/playwright/dotnet:v1.50.0-noble
+docker pull mcr.microsoft.com/playwright/dotnet:v1.51.0-noble
```
### Run the image
@@ -34,7 +34,7 @@ By default, the Docker image will use the `root` user to run the browsers. This
On trusted websites, you can avoid creating a separate user and use root for it since you trust the code which will run on the browsers.
```bash
-docker run -it --rm --ipc=host mcr.microsoft.com/playwright/dotnet:v1.50.0-noble /bin/bash
+docker run -it --rm --ipc=host mcr.microsoft.com/playwright/dotnet:v1.51.0-noble /bin/bash
```
#### Crawling and scraping
@@ -42,7 +42,7 @@ docker run -it --rm --ipc=host mcr.microsoft.com/playwright/dotnet:v1.50.0-noble
On untrusted websites, it's recommended to use a separate user for launching the browsers in combination with the seccomp profile. Inside the container or if you are using the Docker image as a base image you have to use `adduser` for it.
```bash
-docker run -it --rm --ipc=host --user pwuser --security-opt seccomp=seccomp_profile.json mcr.microsoft.com/playwright/dotnet:v1.50.0-noble /bin/bash
+docker run -it --rm --ipc=host --user pwuser --security-opt seccomp=seccomp_profile.json mcr.microsoft.com/playwright/dotnet:v1.51.0-noble /bin/bash
```
[`seccomp_profile.json`](https://github.com/microsoft/playwright/blob/main/utils/docker/seccomp_profile.json) is needed to run Chromium with sandbox. This is a [default Docker seccomp profile](https://github.com/docker/engine/blob/d0d99b04cf6e00ed3fc27e81fc3d94e7eda70af3/profiles/seccomp/default.json) with extra user namespace cloning permissions:
@@ -82,7 +82,7 @@ You can run Playwright Server in Docker while keeping your tests running on the
Start the Playwright Server in Docker:
```bash
-docker run -p 3000:3000 --rm --init -it --workdir /home/pwuser --user pwuser mcr.microsoft.com/playwright:v1.50.0-noble /bin/sh -c "npx -y playwright@1.50.0 run-server --port 3000 --host 0.0.0.0"
+docker run -p 3000:3000 --rm --init -it --workdir /home/pwuser --user pwuser mcr.microsoft.com/playwright:v1.51.0-noble /bin/sh -c "npx -y playwright@1.51.0 run-server --port 3000 --host 0.0.0.0"
```
#### Connecting to the Server
@@ -99,7 +99,7 @@ await using var browser = await playwright.Chromium.ConnectAsync("ws://127.0.0.1
If you need to access local servers from within the Docker container:
```bash
-docker run --add-host=hostmachine:host-gateway -p 3000:3000 --rm --init -it --workdir /home/pwuser --user pwuser mcr.microsoft.com/playwright:v1.50.0-noble /bin/sh -c "npx -y playwright@1.50.0 run-server --port 3000 --host 0.0.0.0"
+docker run --add-host=hostmachine:host-gateway -p 3000:3000 --rm --init -it --workdir /home/pwuser --user pwuser mcr.microsoft.com/playwright:v1.51.0-noble /bin/sh -c "npx -y playwright@1.51.0 run-server --port 3000 --host 0.0.0.0"
```
This makes `hostmachine` point to the host's localhost. Your tests should use `hostmachine` instead of `localhost` when accessing local servers.
@@ -114,9 +114,9 @@ When running tests remotely, ensure the Playwright version in your tests matches
See [all available image tags].
We currently publish images with the following tags:
-- `:v1.50.0` - Playwright v1.50.0 release docker image based on Ubuntu 24.04 LTS (Noble Numbat).
-- `:v1.50.0-noble` - Playwright v1.50.0 release docker image based on Ubuntu 24.04 LTS (Noble Numbat).
-- `:v1.50.0-jammy` - Playwright v1.50.0 release docker image based on Ubuntu 22.04 LTS (Jammy Jellyfish).
+- `:v1.51.0` - Playwright v1.51.0 release docker image based on Ubuntu 24.04 LTS (Noble Numbat).
+- `:v1.51.0-noble` - Playwright v1.51.0 release docker image based on Ubuntu 24.04 LTS (Noble Numbat).
+- `:v1.51.0-jammy` - Playwright v1.51.0 release docker image based on Ubuntu 22.04 LTS (Jammy Jellyfish).
:::note
diff --git a/java/docs/api/class-apirequest.mdx b/java/docs/api/class-apirequest.mdx
index 274f9ce927b..644279a655c 100644
--- a/java/docs/api/class-apirequest.mdx
+++ b/java/docs/api/class-apirequest.mdx
@@ -96,6 +96,9 @@ APIRequest.newContext(options);
- `setIgnoreHTTPSErrors` [boolean] *(optional)*#
Whether to ignore HTTPS errors when sending network requests. Defaults to `false`.
+ - `setMaxRedirects` [int] *(optional)* Added in: v1.52#
+
+ Maximum number of request redirects that will be followed automatically. An error will be thrown if the number is exceeded. Defaults to `20`. Pass `0` to not follow redirects. This can be overwritten for each request individually.
- `setProxy` Proxy *(optional)*#
- `setServer` [String]
diff --git a/java/docs/api/class-browsertype.mdx b/java/docs/api/class-browsertype.mdx
index 5003b9df3ab..4c94347b25c 100644
--- a/java/docs/api/class-browsertype.mdx
+++ b/java/docs/api/class-browsertype.mdx
@@ -272,7 +272,11 @@ BrowserType.launchPersistentContext(userDataDir, options);
**Arguments**
- `userDataDir` [Path]#
- Path to a User Data Directory, which stores browser session data like cookies and local storage. More details for [Chromium](https://chromium.googlesource.com/chromium/src/+/master/docs/user_data_dir.md#introduction) and [Firefox](https://wiki.mozilla.org/Firefox/CommandLineOptions#User_profile). Note that Chromium's user data directory is the **parent** directory of the "Profile Path" seen at `chrome://version`. Pass an empty string to use a temporary directory instead.
+ Path to a User Data Directory, which stores browser session data like cookies and local storage. Pass an empty string to create a temporary directory.
+
+ More details for [Chromium](https://chromium.googlesource.com/chromium/src/+/master/docs/user_data_dir.md#introduction) and [Firefox](https://wiki.mozilla.org/Firefox/CommandLineOptions#User_profile). Chromium's user data directory is the **parent** directory of the "Profile Path" seen at `chrome://version`.
+
+ Note that browsers do not allow launching multiple instances with the same User Data Directory.
- `options` `BrowserType.LaunchPersistentContextOptions` *(optional)*
- `setAcceptDownloads` [boolean] *(optional)*#
diff --git a/java/docs/ci-intro.mdx b/java/docs/ci-intro.mdx
index 6701ce0eba4..ae357b3f121 100644
--- a/java/docs/ci-intro.mdx
+++ b/java/docs/ci-intro.mdx
@@ -47,7 +47,11 @@ jobs:
To learn more about this, see ["Understanding GitHub Actions"](https://docs.github.com/en/actions/learn-github-actions/understanding-github-actions).
Looking at the list of steps in `jobs.test.steps`, you can see that the workflow performs these steps:
-1. Clone your repository 2. Install language dependencies 3. Install project dependencies and build 4. Install Playwright Browsers 5. Run tests
+1. Clone your repository
+1. Install language dependencies
+1. Install project dependencies and build
+1. Install Playwright Browsers
+1. Run tests
## Create a Repo and Push to GitHub
diff --git a/java/docs/ci.mdx b/java/docs/ci.mdx
index 40c83c6ba82..049e0215d0b 100644
--- a/java/docs/ci.mdx
+++ b/java/docs/ci.mdx
@@ -75,7 +75,7 @@ jobs:
name: 'Playwright Tests'
runs-on: ubuntu-latest
container:
- image: mcr.microsoft.com/playwright/java:v1.50.0-noble
+ image: mcr.microsoft.com/playwright/java:v1.51.0-noble
options: --user 1001
steps:
- uses: actions/checkout@v4
@@ -160,7 +160,7 @@ trigger:
pool:
vmImage: ubuntu-latest
-container: mcr.microsoft.com/playwright/java:v1.50.0-noble
+container: mcr.microsoft.com/playwright/java:v1.51.0-noble
steps:
- task: JavaToolInstaller@0
@@ -183,7 +183,7 @@ Running Playwright on CircleCI is very similar to running on GitHub Actions. In
executors:
pw-noble-development:
docker:
- - image: mcr.microsoft.com/playwright/java:v1.50.0-noble
+ - image: mcr.microsoft.com/playwright/java:v1.51.0-noble
```
Note: When using the docker agent definition, you are specifying the resource class of where playwright runs to the 'medium' tier [here](https://circleci.com/docs/configuration-reference?#docker-execution-environment). The default behavior of Playwright is to set the number of workers to the detected core count (2 in the case of the medium tier). Overriding the number of workers to greater than this number will cause unnecessary timeouts and failures.
@@ -194,7 +194,7 @@ Jenkins supports Docker agents for pipelines. Use the [Playwright Docker image](
```groovy
pipeline {
- agent { docker { image 'mcr.microsoft.com/playwright/java:v1.50.0-noble' } }
+ agent { docker { image 'mcr.microsoft.com/playwright/java:v1.51.0-noble' } }
stages {
stage('e2e-tests') {
steps {
@@ -211,7 +211,7 @@ pipeline {
Bitbucket Pipelines can use public [Docker images as build environments](https://confluence.atlassian.com/bitbucket/use-docker-images-as-build-environments-792298897.html). To run Playwright tests on Bitbucket, use our public Docker image ([see Dockerfile](./docker.mdx)).
```yml
-image: mcr.microsoft.com/playwright/java:v1.50.0-noble
+image: mcr.microsoft.com/playwright/java:v1.51.0-noble
```
### GitLab CI
@@ -224,7 +224,7 @@ stages:
tests:
stage: test
- image: mcr.microsoft.com/playwright/java:v1.50.0-noble
+ image: mcr.microsoft.com/playwright/java:v1.51.0-noble
script:
...
```
diff --git a/java/docs/docker.mdx b/java/docs/docker.mdx
index f27bbd32f8e..5b1437b3f6e 100644
--- a/java/docs/docker.mdx
+++ b/java/docs/docker.mdx
@@ -22,7 +22,7 @@ This Docker image is intended to be used for testing and development purposes on
### Pull the image
```bash
-docker pull mcr.microsoft.com/playwright/java:v1.50.0-noble
+docker pull mcr.microsoft.com/playwright/java:v1.51.0-noble
```
### Run the image
@@ -34,7 +34,7 @@ By default, the Docker image will use the `root` user to run the browsers. This
On trusted websites, you can avoid creating a separate user and use root for it since you trust the code which will run on the browsers.
```bash
-docker run -it --rm --ipc=host mcr.microsoft.com/playwright/java:v1.50.0-noble /bin/bash
+docker run -it --rm --ipc=host mcr.microsoft.com/playwright/java:v1.51.0-noble /bin/bash
```
#### Crawling and scraping
@@ -42,7 +42,7 @@ docker run -it --rm --ipc=host mcr.microsoft.com/playwright/java:v1.50.0-noble /
On untrusted websites, it's recommended to use a separate user for launching the browsers in combination with the seccomp profile. Inside the container or if you are using the Docker image as a base image you have to use `adduser` for it.
```bash
-docker run -it --rm --ipc=host --user pwuser --security-opt seccomp=seccomp_profile.json mcr.microsoft.com/playwright/java:v1.50.0-noble /bin/bash
+docker run -it --rm --ipc=host --user pwuser --security-opt seccomp=seccomp_profile.json mcr.microsoft.com/playwright/java:v1.51.0-noble /bin/bash
```
[`seccomp_profile.json`](https://github.com/microsoft/playwright/blob/main/utils/docker/seccomp_profile.json) is needed to run Chromium with sandbox. This is a [default Docker seccomp profile](https://github.com/docker/engine/blob/d0d99b04cf6e00ed3fc27e81fc3d94e7eda70af3/profiles/seccomp/default.json) with extra user namespace cloning permissions:
@@ -82,7 +82,7 @@ You can run Playwright Server in Docker while keeping your tests running on the
Start the Playwright Server in Docker:
```bash
-docker run -p 3000:3000 --rm --init -it --workdir /home/pwuser --user pwuser mcr.microsoft.com/playwright:v1.50.0-noble /bin/sh -c "npx -y playwright@1.50.0 run-server --port 3000 --host 0.0.0.0"
+docker run -p 3000:3000 --rm --init -it --workdir /home/pwuser --user pwuser mcr.microsoft.com/playwright:v1.51.0-noble /bin/sh -c "npx -y playwright@1.51.0 run-server --port 3000 --host 0.0.0.0"
```
#### Connecting to the Server
@@ -107,7 +107,7 @@ public class App {
If you need to access local servers from within the Docker container:
```bash
-docker run --add-host=hostmachine:host-gateway -p 3000:3000 --rm --init -it --workdir /home/pwuser --user pwuser mcr.microsoft.com/playwright:v1.50.0-noble /bin/sh -c "npx -y playwright@1.50.0 run-server --port 3000 --host 0.0.0.0"
+docker run --add-host=hostmachine:host-gateway -p 3000:3000 --rm --init -it --workdir /home/pwuser --user pwuser mcr.microsoft.com/playwright:v1.51.0-noble /bin/sh -c "npx -y playwright@1.51.0 run-server --port 3000 --host 0.0.0.0"
```
This makes `hostmachine` point to the host's localhost. Your tests should use `hostmachine` instead of `localhost` when accessing local servers.
@@ -122,9 +122,9 @@ When running tests remotely, ensure the Playwright version in your tests matches
See [all available image tags].
We currently publish images with the following tags:
-- `:v1.50.0` - Playwright v1.50.0 release docker image based on Ubuntu 24.04 LTS (Noble Numbat).
-- `:v1.50.0-noble` - Playwright v1.50.0 release docker image based on Ubuntu 24.04 LTS (Noble Numbat).
-- `:v1.50.0-jammy` - Playwright v1.50.0 release docker image based on Ubuntu 22.04 LTS (Jammy Jellyfish).
+- `:v1.51.0` - Playwright v1.51.0 release docker image based on Ubuntu 24.04 LTS (Noble Numbat).
+- `:v1.51.0-noble` - Playwright v1.51.0 release docker image based on Ubuntu 24.04 LTS (Noble Numbat).
+- `:v1.51.0-jammy` - Playwright v1.51.0 release docker image based on Ubuntu 22.04 LTS (Jammy Jellyfish).
:::note
diff --git a/java/docs/intro.mdx b/java/docs/intro.mdx
index 65c32f4c4f8..04f5c561ebd 100644
--- a/java/docs/intro.mdx
+++ b/java/docs/intro.mdx
@@ -58,7 +58,7 @@ public class App {
com.microsoft.playwright
playwright
- 1.50.0
+ 1.51.0
diff --git a/java/docs/test-runners.mdx b/java/docs/test-runners.mdx
index 2dc23ff302e..aa13433c8a5 100644
--- a/java/docs/test-runners.mdx
+++ b/java/docs/test-runners.mdx
@@ -198,7 +198,7 @@ repositories {
}
dependencies {
- implementation 'com.microsoft.playwright:playwright:1.50.0'
+ implementation 'com.microsoft.playwright:playwright:1.51.0'
}
application {
@@ -231,7 +231,7 @@ repositories {
}
dependencies {
- implementation("com.microsoft.playwright:playwright:1.50.0")
+ implementation("com.microsoft.playwright:playwright:1.51.0")
}
application {
diff --git a/nodejs/docs/api/class-apirequest.mdx b/nodejs/docs/api/class-apirequest.mdx
index 565a337effa..095c210a89b 100644
--- a/nodejs/docs/api/class-apirequest.mdx
+++ b/nodejs/docs/api/class-apirequest.mdx
@@ -96,6 +96,9 @@ await apiRequest.newContext(options);
- `ignoreHTTPSErrors` [boolean] *(optional)*#
Whether to ignore HTTPS errors when sending network requests. Defaults to `false`.
+ - `maxRedirects` [number] *(optional)* Added in: v1.52#
+
+ Maximum number of request redirects that will be followed automatically. An error will be thrown if the number is exceeded. Defaults to `20`. Pass `0` to not follow redirects. This can be overwritten for each request individually.
- `proxy` [Object] *(optional)*#
- `server` [string]
diff --git a/nodejs/docs/api/class-browsertype.mdx b/nodejs/docs/api/class-browsertype.mdx
index a8924308c4c..4e6a81ec5f6 100644
--- a/nodejs/docs/api/class-browsertype.mdx
+++ b/nodejs/docs/api/class-browsertype.mdx
@@ -276,7 +276,11 @@ await browserType.launchPersistentContext(userDataDir, options);
**Arguments**
- `userDataDir` [string]#
- Path to a User Data Directory, which stores browser session data like cookies and local storage. More details for [Chromium](https://chromium.googlesource.com/chromium/src/+/master/docs/user_data_dir.md#introduction) and [Firefox](https://wiki.mozilla.org/Firefox/CommandLineOptions#User_profile). Note that Chromium's user data directory is the **parent** directory of the "Profile Path" seen at `chrome://version`. Pass an empty string to use a temporary directory instead.
+ Path to a User Data Directory, which stores browser session data like cookies and local storage. Pass an empty string to create a temporary directory.
+
+ More details for [Chromium](https://chromium.googlesource.com/chromium/src/+/master/docs/user_data_dir.md#introduction) and [Firefox](https://wiki.mozilla.org/Firefox/CommandLineOptions#User_profile). Chromium's user data directory is the **parent** directory of the "Profile Path" seen at `chrome://version`.
+
+ Note that browsers do not allow launching multiple instances with the same User Data Directory.
- `options` [Object] *(optional)*
- `acceptDownloads` [boolean] *(optional)*#
diff --git a/nodejs/docs/ci-intro.mdx b/nodejs/docs/ci-intro.mdx
index da1e0c7eb43..e787c094509 100644
--- a/nodejs/docs/ci-intro.mdx
+++ b/nodejs/docs/ci-intro.mdx
@@ -52,7 +52,12 @@ jobs:
```
The workflow performs these steps:
-1. Clone your repository 2. Install Node.js 3. Install NPM Dependencies 4. Install Playwright Browsers 5. Run Playwright tests 6. Upload HTML report to the GitHub UI
+1. Clone your repository
+1. Install Node.js
+1. Install NPM Dependencies
+1. Install Playwright Browsers
+1. Run Playwright tests
+1. Upload HTML report to the GitHub UI
To learn more about this, see ["Understanding GitHub Actions"](https://docs.github.com/en/actions/learn-github-actions/understanding-github-actions).
diff --git a/nodejs/docs/ci.mdx b/nodejs/docs/ci.mdx
index a6fe4d13f1a..894251c862f 100644
--- a/nodejs/docs/ci.mdx
+++ b/nodejs/docs/ci.mdx
@@ -101,7 +101,7 @@ jobs:
name: 'Playwright Tests'
runs-on: ubuntu-latest
container:
- image: mcr.microsoft.com/playwright:v1.51.0-noble
+ image: mcr.microsoft.com/playwright:v1.51.1-noble
options: --user 1001
steps:
- uses: actions/checkout@v4
@@ -335,7 +335,7 @@ trigger:
pool:
vmImage: ubuntu-latest
-container: mcr.microsoft.com/playwright:v1.51.0-noble
+container: mcr.microsoft.com/playwright:v1.51.1-noble
steps:
- task: NodeTool@0
@@ -359,7 +359,7 @@ Running Playwright on CircleCI is very similar to running on GitHub Actions. In
executors:
pw-noble-development:
docker:
- - image: mcr.microsoft.com/playwright:v1.51.0-noble
+ - image: mcr.microsoft.com/playwright:v1.51.1-noble
```
Note: When using the docker agent definition, you are specifying the resource class of where playwright runs to the 'medium' tier [here](https://circleci.com/docs/configuration-reference?#docker-execution-environment). The default behavior of Playwright is to set the number of workers to the detected core count (2 in the case of the medium tier). Overriding the number of workers to greater than this number will cause unnecessary timeouts and failures.
@@ -382,7 +382,7 @@ Jenkins supports Docker agents for pipelines. Use the [Playwright Docker image](
```groovy
pipeline {
- agent { docker { image 'mcr.microsoft.com/playwright:v1.51.0-noble' } }
+ agent { docker { image 'mcr.microsoft.com/playwright:v1.51.1-noble' } }
stages {
stage('e2e-tests') {
steps {
@@ -399,7 +399,7 @@ pipeline {
Bitbucket Pipelines can use public [Docker images as build environments](https://confluence.atlassian.com/bitbucket/use-docker-images-as-build-environments-792298897.html). To run Playwright tests on Bitbucket, use our public Docker image ([see Dockerfile](./docker.mdx)).
```yml
-image: mcr.microsoft.com/playwright:v1.51.0-noble
+image: mcr.microsoft.com/playwright:v1.51.1-noble
```
### GitLab CI
@@ -412,7 +412,7 @@ stages:
tests:
stage: test
- image: mcr.microsoft.com/playwright:v1.51.0-noble
+ image: mcr.microsoft.com/playwright:v1.51.1-noble
script:
...
```
@@ -427,7 +427,7 @@ stages:
tests:
stage: test
- image: mcr.microsoft.com/playwright:v1.51.0-noble
+ image: mcr.microsoft.com/playwright:v1.51.1-noble
parallel: 7
script:
- npm ci
@@ -442,7 +442,7 @@ stages:
tests:
stage: test
- image: mcr.microsoft.com/playwright:v1.51.0-noble
+ image: mcr.microsoft.com/playwright:v1.51.1-noble
parallel:
matrix:
- PROJECT: ['chromium', 'webkit']
@@ -458,7 +458,7 @@ To run Playwright tests on Google Cloud Build, use our public Docker image ([see
```yml
steps:
-- name: mcr.microsoft.com/playwright:v1.51.0-noble
+- name: mcr.microsoft.com/playwright:v1.51.1-noble
script:
...
env:
@@ -476,7 +476,7 @@ type: docker
steps:
- name: test
- image: mcr.microsoft.com/playwright:v1.51.0-noble
+ image: mcr.microsoft.com/playwright:v1.51.1-noble
commands:
- npx playwright test
```
diff --git a/nodejs/docs/docker.mdx b/nodejs/docs/docker.mdx
index 38a62c90b0d..191298d0905 100644
--- a/nodejs/docs/docker.mdx
+++ b/nodejs/docs/docker.mdx
@@ -22,7 +22,7 @@ This Docker image is intended to be used for testing and development purposes on
### Pull the image
```bash
-docker pull mcr.microsoft.com/playwright:v1.51.0-noble
+docker pull mcr.microsoft.com/playwright:v1.51.1-noble
```
### Run the image
@@ -34,7 +34,7 @@ By default, the Docker image will use the `root` user to run the browsers. This
On trusted websites, you can avoid creating a separate user and use root for it since you trust the code which will run on the browsers.
```bash
-docker run -it --rm --ipc=host mcr.microsoft.com/playwright:v1.51.0-noble /bin/bash
+docker run -it --rm --ipc=host mcr.microsoft.com/playwright:v1.51.1-noble /bin/bash
```
#### Crawling and scraping
@@ -42,7 +42,7 @@ docker run -it --rm --ipc=host mcr.microsoft.com/playwright:v1.51.0-noble /bin/b
On untrusted websites, it's recommended to use a separate user for launching the browsers in combination with the seccomp profile. Inside the container or if you are using the Docker image as a base image you have to use `adduser` for it.
```bash
-docker run -it --rm --ipc=host --user pwuser --security-opt seccomp=seccomp_profile.json mcr.microsoft.com/playwright:v1.51.0-noble /bin/bash
+docker run -it --rm --ipc=host --user pwuser --security-opt seccomp=seccomp_profile.json mcr.microsoft.com/playwright:v1.51.1-noble /bin/bash
```
[`seccomp_profile.json`](https://github.com/microsoft/playwright/blob/main/utils/docker/seccomp_profile.json) is needed to run Chromium with sandbox. This is a [default Docker seccomp profile](https://github.com/docker/engine/blob/d0d99b04cf6e00ed3fc27e81fc3d94e7eda70af3/profiles/seccomp/default.json) with extra user namespace cloning permissions:
@@ -82,7 +82,7 @@ You can run Playwright Server in Docker while keeping your tests running on the
Start the Playwright Server in Docker:
```bash
-docker run -p 3000:3000 --rm --init -it --workdir /home/pwuser --user pwuser mcr.microsoft.com/playwright:v1.51.0-noble /bin/sh -c "npx -y playwright@1.51.0 run-server --port 3000 --host 0.0.0.0"
+docker run -p 3000:3000 --rm --init -it --workdir /home/pwuser --user pwuser mcr.microsoft.com/playwright:v1.51.1-noble /bin/sh -c "npx -y playwright@1.51.1 run-server --port 3000 --host 0.0.0.0"
```
#### Connecting to the Server
@@ -105,7 +105,7 @@ const browser = await playwright['chromium'].connect('ws://127.0.0.1:3000/');
If you need to access local servers from within the Docker container:
```bash
-docker run --add-host=hostmachine:host-gateway -p 3000:3000 --rm --init -it --workdir /home/pwuser --user pwuser mcr.microsoft.com/playwright:v1.51.0-noble /bin/sh -c "npx -y playwright@1.51.0 run-server --port 3000 --host 0.0.0.0"
+docker run --add-host=hostmachine:host-gateway -p 3000:3000 --rm --init -it --workdir /home/pwuser --user pwuser mcr.microsoft.com/playwright:v1.51.1-noble /bin/sh -c "npx -y playwright@1.51.1 run-server --port 3000 --host 0.0.0.0"
```
This makes `hostmachine` point to the host's localhost. Your tests should use `hostmachine` instead of `localhost` when accessing local servers.
@@ -120,9 +120,9 @@ When running tests remotely, ensure the Playwright version in your tests matches
See [all available image tags].
We currently publish images with the following tags:
-- `:v1.51.0` - Playwright v1.51.0 release docker image based on Ubuntu 24.04 LTS (Noble Numbat).
-- `:v1.51.0-noble` - Playwright v1.51.0 release docker image based on Ubuntu 24.04 LTS (Noble Numbat).
-- `:v1.51.0-jammy` - Playwright v1.51.0 release docker image based on Ubuntu 22.04 LTS (Jammy Jellyfish).
+- `:v1.51.1` - Playwright v1.51.1 release docker image based on Ubuntu 24.04 LTS (Noble Numbat).
+- `:v1.51.1-noble` - Playwright v1.51.1 release docker image based on Ubuntu 24.04 LTS (Noble Numbat).
+- `:v1.51.1-jammy` - Playwright v1.51.1 release docker image based on Ubuntu 22.04 LTS (Jammy Jellyfish).
:::note
@@ -146,7 +146,7 @@ To run Playwright inside Docker, you need to have Node.js, [Playwright browsers]
```Dockerfile
FROM node:20-bookworm
-RUN npx -y playwright@1.51.0 install --with-deps
+RUN npx -y playwright@1.51.1 install --with-deps
```
diff --git a/python/docs/api/class-apirequest.mdx b/python/docs/api/class-apirequest.mdx
index 510f1c176b9..388d3c7e0fe 100644
--- a/python/docs/api/class-apirequest.mdx
+++ b/python/docs/api/class-apirequest.mdx
@@ -95,6 +95,9 @@ api_request.new_context(**kwargs)
- `ignore_https_errors` [bool] *(optional)*#
Whether to ignore HTTPS errors when sending network requests. Defaults to `false`.
+- `max_redirects` [int] *(optional)* Added in: v1.52#
+
+ Maximum number of request redirects that will be followed automatically. An error will be thrown if the number is exceeded. Defaults to `20`. Pass `0` to not follow redirects. This can be overwritten for each request individually.
- `proxy` [Dict] *(optional)*#
- `server` [str]
diff --git a/python/docs/api/class-browsertype.mdx b/python/docs/api/class-browsertype.mdx
index 616c6062805..f022cefd575 100644
--- a/python/docs/api/class-browsertype.mdx
+++ b/python/docs/api/class-browsertype.mdx
@@ -325,7 +325,11 @@ browser_type.launch_persistent_context(user_data_dir, **kwargs)
**Arguments**
- `user_data_dir` [Union]\[[str], [pathlib.Path]\]#
- Path to a User Data Directory, which stores browser session data like cookies and local storage. More details for [Chromium](https://chromium.googlesource.com/chromium/src/+/master/docs/user_data_dir.md#introduction) and [Firefox](https://wiki.mozilla.org/Firefox/CommandLineOptions#User_profile). Note that Chromium's user data directory is the **parent** directory of the "Profile Path" seen at `chrome://version`. Pass an empty string to use a temporary directory instead.
+ Path to a User Data Directory, which stores browser session data like cookies and local storage. Pass an empty string to create a temporary directory.
+
+ More details for [Chromium](https://chromium.googlesource.com/chromium/src/+/master/docs/user_data_dir.md#introduction) and [Firefox](https://wiki.mozilla.org/Firefox/CommandLineOptions#User_profile). Chromium's user data directory is the **parent** directory of the "Profile Path" seen at `chrome://version`.
+
+ Note that browsers do not allow launching multiple instances with the same User Data Directory.
- `accept_downloads` [bool] *(optional)*#
Whether to automatically download all the attachments. Defaults to `true` where all the downloads are accepted.
diff --git a/python/docs/ci-intro.mdx b/python/docs/ci-intro.mdx
index 1a34cb6e26f..89eaab3f583 100644
--- a/python/docs/ci-intro.mdx
+++ b/python/docs/ci-intro.mdx
@@ -54,7 +54,11 @@ jobs:
To learn more about this, see ["Understanding GitHub Actions"](https://docs.github.com/en/actions/learn-github-actions/understanding-github-actions).
Looking at the list of steps in `jobs.test.steps`, you can see that the workflow performs these steps:
-1. Clone your repository 2. Install language dependencies 3. Install project dependencies and build 4. Install Playwright Browsers 5. Run tests
+1. Clone your repository
+1. Install language dependencies
+1. Install project dependencies and build
+1. Install Playwright Browsers
+1. Run tests
## Create a Repo and Push to GitHub
diff --git a/python/docs/ci.mdx b/python/docs/ci.mdx
index d3d0c43bb83..d3e80ebc709 100644
--- a/python/docs/ci.mdx
+++ b/python/docs/ci.mdx
@@ -83,7 +83,7 @@ jobs:
name: 'Playwright Tests'
runs-on: ubuntu-latest
container:
- image: mcr.microsoft.com/playwright/python:v1.50.0-noble
+ image: mcr.microsoft.com/playwright/python:v1.51.0-noble
options: --user 1001
steps:
- uses: actions/checkout@v4
@@ -173,7 +173,7 @@ trigger:
pool:
vmImage: ubuntu-latest
-container: mcr.microsoft.com/playwright/python:v1.50.0-noble
+container: mcr.microsoft.com/playwright/python:v1.51.0-noble
steps:
- task: UsePythonVersion@0
@@ -197,7 +197,7 @@ Running Playwright on CircleCI is very similar to running on GitHub Actions. In
executors:
pw-noble-development:
docker:
- - image: mcr.microsoft.com/playwright/python:v1.50.0-noble
+ - image: mcr.microsoft.com/playwright/python:v1.51.0-noble
```
Note: When using the docker agent definition, you are specifying the resource class of where playwright runs to the 'medium' tier [here](https://circleci.com/docs/configuration-reference?#docker-execution-environment). The default behavior of Playwright is to set the number of workers to the detected core count (2 in the case of the medium tier). Overriding the number of workers to greater than this number will cause unnecessary timeouts and failures.
@@ -208,7 +208,7 @@ Jenkins supports Docker agents for pipelines. Use the [Playwright Docker image](
```groovy
pipeline {
- agent { docker { image 'mcr.microsoft.com/playwright/python:v1.50.0-noble' } }
+ agent { docker { image 'mcr.microsoft.com/playwright/python:v1.51.0-noble' } }
stages {
stage('e2e-tests') {
steps {
@@ -225,7 +225,7 @@ pipeline {
Bitbucket Pipelines can use public [Docker images as build environments](https://confluence.atlassian.com/bitbucket/use-docker-images-as-build-environments-792298897.html). To run Playwright tests on Bitbucket, use our public Docker image ([see Dockerfile](./docker.mdx)).
```yml
-image: mcr.microsoft.com/playwright/python:v1.50.0-noble
+image: mcr.microsoft.com/playwright/python:v1.51.0-noble
```
### GitLab CI
@@ -238,7 +238,7 @@ stages:
tests:
stage: test
- image: mcr.microsoft.com/playwright/python:v1.50.0-noble
+ image: mcr.microsoft.com/playwright/python:v1.51.0-noble
script:
...
```
diff --git a/python/docs/docker.mdx b/python/docs/docker.mdx
index 375f0376bf2..7953e722eec 100644
--- a/python/docs/docker.mdx
+++ b/python/docs/docker.mdx
@@ -22,7 +22,7 @@ This Docker image is intended to be used for testing and development purposes on
### Pull the image
```bash
-docker pull mcr.microsoft.com/playwright/python:v1.50.0-noble
+docker pull mcr.microsoft.com/playwright/python:v1.51.0-noble
```
### Run the image
@@ -34,7 +34,7 @@ By default, the Docker image will use the `root` user to run the browsers. This
On trusted websites, you can avoid creating a separate user and use root for it since you trust the code which will run on the browsers.
```bash
-docker run -it --rm --ipc=host mcr.microsoft.com/playwright/python:v1.50.0-noble /bin/bash
+docker run -it --rm --ipc=host mcr.microsoft.com/playwright/python:v1.51.0-noble /bin/bash
```
#### Crawling and scraping
@@ -42,7 +42,7 @@ docker run -it --rm --ipc=host mcr.microsoft.com/playwright/python:v1.50.0-noble
On untrusted websites, it's recommended to use a separate user for launching the browsers in combination with the seccomp profile. Inside the container or if you are using the Docker image as a base image you have to use `adduser` for it.
```bash
-docker run -it --rm --ipc=host --user pwuser --security-opt seccomp=seccomp_profile.json mcr.microsoft.com/playwright/python:v1.50.0-noble /bin/bash
+docker run -it --rm --ipc=host --user pwuser --security-opt seccomp=seccomp_profile.json mcr.microsoft.com/playwright/python:v1.51.0-noble /bin/bash
```
[`seccomp_profile.json`](https://github.com/microsoft/playwright/blob/main/utils/docker/seccomp_profile.json) is needed to run Chromium with sandbox. This is a [default Docker seccomp profile](https://github.com/docker/engine/blob/d0d99b04cf6e00ed3fc27e81fc3d94e7eda70af3/profiles/seccomp/default.json) with extra user namespace cloning permissions:
@@ -82,7 +82,7 @@ You can run Playwright Server in Docker while keeping your tests running on the
Start the Playwright Server in Docker:
```bash
-docker run -p 3000:3000 --rm --init -it --workdir /home/pwuser --user pwuser mcr.microsoft.com/playwright:v1.50.0-noble /bin/sh -c "npx -y playwright@1.50.0 run-server --port 3000 --host 0.0.0.0"
+docker run -p 3000:3000 --rm --init -it --workdir /home/pwuser --user pwuser mcr.microsoft.com/playwright:v1.51.0-noble /bin/sh -c "npx -y playwright@1.51.0 run-server --port 3000 --host 0.0.0.0"
```
#### Connecting to the Server
@@ -122,7 +122,7 @@ async with async_playwright() as p:
If you need to access local servers from within the Docker container:
```bash
-docker run --add-host=hostmachine:host-gateway -p 3000:3000 --rm --init -it --workdir /home/pwuser --user pwuser mcr.microsoft.com/playwright:v1.50.0-noble /bin/sh -c "npx -y playwright@1.50.0 run-server --port 3000 --host 0.0.0.0"
+docker run --add-host=hostmachine:host-gateway -p 3000:3000 --rm --init -it --workdir /home/pwuser --user pwuser mcr.microsoft.com/playwright:v1.51.0-noble /bin/sh -c "npx -y playwright@1.51.0 run-server --port 3000 --host 0.0.0.0"
```
This makes `hostmachine` point to the host's localhost. Your tests should use `hostmachine` instead of `localhost` when accessing local servers.
@@ -137,9 +137,9 @@ When running tests remotely, ensure the Playwright version in your tests matches
See [all available image tags].
We currently publish images with the following tags:
-- `:v1.50.0` - Playwright v1.50.0 release docker image based on Ubuntu 24.04 LTS (Noble Numbat).
-- `:v1.50.0-noble` - Playwright v1.50.0 release docker image based on Ubuntu 24.04 LTS (Noble Numbat).
-- `:v1.50.0-jammy` - Playwright v1.50.0 release docker image based on Ubuntu 22.04 LTS (Jammy Jellyfish).
+- `:v1.51.0` - Playwright v1.51.0 release docker image based on Ubuntu 24.04 LTS (Noble Numbat).
+- `:v1.51.0-noble` - Playwright v1.51.0 release docker image based on Ubuntu 24.04 LTS (Noble Numbat).
+- `:v1.51.0-jammy` - Playwright v1.51.0 release docker image based on Ubuntu 22.04 LTS (Jammy Jellyfish).
:::note
@@ -163,7 +163,7 @@ To run Playwright inside Docker, you need to have Python, [Playwright browsers](
```Dockerfile
FROM python:3.12-bookworm
-RUN pip install playwright==@1.50.0 && \
+RUN pip install playwright==@1.51.0 && \
playwright install --with-deps
```