Important: This documentation is about an older version. It's relevant only to the release noted, many of the features and functions have been updated or replaced. Please view the current version.
newPage([options])
Creates and returns a new Page in a new BrowserContext if a BrowserContext
hasn’t already been initialized for the Browser. If a BrowserContext
has already been initialized an error is thrown.
Note
A 1-to-1 mapping between Browser andBrowserContext
means you cannot runBrowserContexts
concurrently. Due to this restriction, if one already exists, it must be retrieved and closed first before creating a new one.
Caution
Pages that have been opened ought to be closed usingPage.close
. Pages left open could potentially distort the results of Web Vital metrics.
Parameter | Type | Default | Description |
---|---|---|---|
options | object | null | |
options.bypassCSP | boolean | false | Whether to bypass a page’s Content-Security-Policy. |
options.colorScheme | string | 'light' | Whether to display a page in dark or light mode by emulating the ‘prefers-colors-scheme’ media feature. It can be one of 'light' , 'dark' , 'no-preference' . |
options.deviceScaleFactor | number | 1 | Sets the resolution ratio in physical pixels to the resolution in CSS pixels i.e. if set higher than 1 , then images will look sharper on high pixel density screens. See an example below. |
options.extraHTTPHeaders | object | null | Contains additional HTTP headers to be sent with every request, where the keys are HTTP headers and values are HTTP header values. |
options.geolocation | object | null | Sets the user’s geographical location. |
options.geolocation.latitude | number | 0 | Latitude should be between -90 and 90 . |
options.geolocation.longitude | number | 0 | Longitude should be between -180 and 180 . |
options.geolocation.accuracy | number | 0 | Accuracy should only be a non-negative number. Defaults to 0 . |
options.hasTouch | boolean | false | Whether to simulate a device with touch events. |
options.httpCredentials | object | null | Sets the credentials for HTTP authentication using Basic Auth. |
options.httpCredentials.username | string | '' | Username to pass to the web browser for Basic HTTP Authentication. |
options.httpCredentials.password | string | '' | Password to pass to the web browser for Basic HTTP Authentication. |
options.ignoreHTTPSErrors | boolean | false | Whether to ignore HTTPS errors that may be caused by invalid certificates. |
options.isMobile | boolean | false | Whether to simulate a mobile device. |
options.javaScriptEnabled | boolean | true | Whether to activate JavaScript support for the context. |
options.locale | string | system | Specifies the user’s locale, such as 'en-US' , 'tr-TR' , etc. |
options.offline | boolean | false | Whether to emulate an offline network. |
options.permissions | Array | null | Permissions to grant for the context’s pages. See browserContext.grantPermissions() for the options. |
options.reducedMotion | string | 'no-preference' | Minimizes the amount of motion by emulating the ‘prefers-reduced-motion’ media feature. It can be one of 'reduce' and 'no-preference' . See page.emulateMedia() for the options. |
options.screen | object | {'width': 1280, 'height': 720} | Sets a window screen size for all pages in the context. It can only be used when the viewport is set. |
options.screen.width | number | 1280 | Page width in pixels. |
options.screen.height | number | 720 | Page height in pixels. |
options.timezoneID | string | system | Changes the context’s timezone. See ICU’s metaZones.txt for a list of supported timezone IDs. |
options.userAgent | string | browser | Specifies the user agent to use in the context. |
options.viewport | object | {'width': 1280, 'height': 720} | Sets a viewport size for all pages in the context. null disables the default viewport. |
options.viewport.width | number | 1280 | Page width in pixels. |
options.viewport.height | number | 720 | Page height in pixels. |
Returns
Type | Description |
---|---|
object | Page object |
deviceScaleFactor example
import { browser } from 'k6/experimental/browser';
export const options = {
scenarios: {
browser: {
executor: 'shared-iterations',
options: {
browser: {
type: 'chromium',
},
},
},
},
};
export default async function () {
const page = browser.newPage({
viewport: {
width: 375,
height: 812,
},
deviceScaleFactor: 3,
});
try {
await page.goto('https://test.k6.io/');
} finally {
page.close();
}
}