From cf12af513709e8532de1318f1ad761793f510665 Mon Sep 17 00:00:00 2001 From: mdcruz Date: Mon, 23 Jan 2023 14:04:22 +0000 Subject: [PATCH 01/15] update xk6-browser code examples to async/await --- .../01 Get started/01 Welcome.md | 42 +++-- .../01 Get started/03 Running xk6-browser.md | 145 +++++++++--------- .../markdown/docs/30 xk6-browser/02 API.md | 36 ++--- .../docs/30 xk6-browser/02 API/01 Browser.md | 22 +-- .../01 Browser/newcontext--options--.md | 22 +-- .../02 API/01 Browser/newpage--options--.md | 22 +-- .../02 API/02 BrowserContext/newPage.md | 18 +-- .../setDefaultNavigationTimeout.md | 14 +- .../02 API/02 BrowserContext/setOffline.md | 21 +-- .../30 xk6-browser/02 API/03 BrowserType.md | 20 +-- .../03 BrowserType/launch--options--.md | 20 +-- .../02 API/04-element-handle.md | 45 +++--- .../docs/30 xk6-browser/02 API/08 Locator.md | 102 ++++++------ .../02 API/08 Locator/check--options--.md | 9 +- .../02 API/08 Locator/click--options--.md | 9 +- .../02 API/08 Locator/dblclick--options--.md | 9 +- .../08 Locator/dispatchevent--options--.md | 9 +- .../02 API/08 Locator/fill--options--.md | 9 +- .../02 API/08 Locator/focus--options--.md | 9 +- .../08 Locator/getattribute--options--.md | 11 +- .../02 API/08 Locator/hover--options--.md | 9 +- .../02 API/08 Locator/innerhtml--options--.md | 11 +- .../02 API/08 Locator/innertext--options--.md | 11 +- .../08 Locator/inputvalue--options--.md | 13 +- .../02 API/08 Locator/ischecked--options--.md | 13 +- .../08 Locator/isdisabled--options--.md | 13 +- .../08 Locator/iseditable--options--.md | 13 +- .../02 API/08 Locator/isenabled--options--.md | 13 +- .../02 API/08 Locator/ishidden--options--.md | 13 +- .../02 API/08 Locator/isvisible--options--.md | 13 +- .../02 API/08 Locator/press--options--.md | 13 +- .../08 Locator/selectoption--options--.md | 9 +- .../02 API/08 Locator/tap--options--.md | 9 +- .../08 Locator/textcontent--options--.md | 21 ++- .../02 API/08 Locator/type--options--.md | 9 +- .../02 API/08 Locator/uncheck--options--.md | 11 +- .../02 API/08 Locator/waitfor--options--.md | 13 +- .../docs/30 xk6-browser/02 API/10-page.md | 43 +++--- .../03 Load testing websites.md | 51 +++--- 39 files changed, 412 insertions(+), 483 deletions(-) diff --git a/src/data/markdown/docs/30 xk6-browser/01 Get started/01 Welcome.md b/src/data/markdown/docs/30 xk6-browser/01 Get started/01 Welcome.md index 7b5ca1a229..758c2150ea 100644 --- a/src/data/markdown/docs/30 xk6-browser/01 Get started/01 Welcome.md +++ b/src/data/markdown/docs/30 xk6-browser/01 Get started/01 Welcome.md @@ -44,33 +44,31 @@ The main use case for xk6-browser is to test performance on the browser level. B ```javascript -import { check } from 'k6'; import { chromium } from 'k6/x/browser'; +import { check } from 'k6' -export default function () { +export default async function () { const browser = chromium.launch({ headless: false }); const page = browser.newPage(); - page - .goto('https://test.k6.io/my_messages.php', { waitUntil: 'networkidle' }) - .then(() => { - // Enter login credentials and login - page.locator('input[name="login"]').type('admin'); - page.locator('input[name="password"]').type('123'); - - // Wait for asynchronous operations to complete - return Promise.all([ - page.waitForNavigation(), - page.locator('input[type="submit"]').click(), - ]).then(() => { - check(page, { - 'header': page.locator('h2').textContent() == 'Welcome, admin!', - }); - }); - }).finally(() => { - page.close(); - browser.close(); + try { + await page.goto('https://test.k6.io/my_messages.php', { waitUntil: 'networkidle' }); + + page.locator('input[name="login"]').type('admin'); + page.locator('input[name="password"]').type('123'); + + await Promise.all([ + page.waitForNavigation(), + page.locator('input[type="submit"]').click(), + ]); + + check(page, { + 'header': page.locator('h2').textContent() == 'Welcome, admin!', }); + } finally { + page.close(); + browser.close(); + } } ``` @@ -80,7 +78,7 @@ The preceding code launches a Chromium-based browser, visits the application and
-We're currently (Nov. 2022) migrating most xk6-browser APIs to be async and return a Promise. Because k6 doesn't yet support the async/await keywords, you'll have to use `then()` to resolve Promises. For more information, check out [Running xk6-browser](/javascript-api/xk6-browser/get-started/running-xk6-browser/). +We're currently (January 2023) migrating most xk6-browser APIs to be async and return a Promise. To make this simpler, our goal is to use the async/await keywords. For more information, check out [Running xk6-browser](/javascript-api/xk6-browser/get-started/running-xk6-browser/).
diff --git a/src/data/markdown/docs/30 xk6-browser/01 Get started/03 Running xk6-browser.md b/src/data/markdown/docs/30 xk6-browser/01 Get started/03 Running xk6-browser.md index 2f33e6bc11..eb7c8a454c 100644 --- a/src/data/markdown/docs/30 xk6-browser/01 Get started/03 Running xk6-browser.md +++ b/src/data/markdown/docs/30 xk6-browser/01 Get started/03 Running xk6-browser.md @@ -25,34 +25,34 @@ To run a simple local script: 2. Copy the following code, paste it into your favorite editor, and save it as `script.js`: - - - ```javascript - import { chromium } from 'k6/x/browser'; - - export default function () { - const browser = chromium.launch({ headless: false }); - const page = browser.newPage(); - - page - .goto('https://test.k6.io/', { waitUntil: 'networkidle' }) - .then(() => { - page.screenshot({ path: 'screenshot.png' }); - }) - .finally(() => { - page.close(); - browser.close(); - }); + + + + +```javascript +import { chromium } from 'k6/x/browser'; + +export default async function () { + const browser = chromium.launch({ headless: false }); + const page = browser.newPage(); + + try { + await page.goto('https://test.k6.io/', { waitUntil: 'networkidle' }) + page.screenshot({ path: 'screenshot.png' }); + } finally { + page.close(); + browser.close(); } - ``` +} +``` - + The preceding code imports the `chromium` [BrowserType](/javascript-api/xk6-browser/api/browsertype) (currently the only available `BrowserType` implementation), and uses its `launch` method to start up a Chromium [Browser](/javascript-api/xk6-browser/api/browser) process. After it starts, you can interact with it using the [browser-level APIs](/javascript-api/xk6-browser/api/#browser-level-apis). This example visits a test URL, waits until the network is idle and takes a screenshot of the page. Afterwards, it closes the page and the browser.
- To provide rough compatibility with the Playwright API, the xk6-browser API is also being converted from synchronous to asynchronous. `page.goto()` is now asynchronous so `.then()` is used to deal with the asynchronous nature of the operation. + To provide rough compatibility with the Playwright API, the xk6-browser API is also being converted from synchronous to asynchronous. `page.goto()` is now asynchronous so `await` keyword is used to deal with the asynchronous nature of the operation.
@@ -88,26 +88,27 @@ You can also use `page.$()` instead of `page.locator()`. You can find the differ + + ```javascript import { chromium } from 'k6/x/browser'; -export default function () { +export default async function () { const browser = chromium.launch({ headless: false }); const page = browser.newPage(); - - page - .goto('https://test.k6.io/my_messages.php', { waitUntil: 'networkidle' }) - .then(() => { - // Enter login credentials - page.locator('input[name="login"]').type('admin'); - page.locator('input[name="password"]').type('123'); - - page.screenshot({ path: 'screenshot.png' }); - }) - .finally(() => { - page.close(); - browser.close(); - }); + + try { + await page.goto('https://test.k6.io/my_messages.php', { waitUntil: 'networkidle' }); + + // Enter login credentials + page.locator('input[name="login"]').type('admin'); + page.locator('input[name="password"]').type('123'); + + page.screenshot({ path: 'screenshot.png' }); + } finally { + page.close(); + browser.close(); + } } ``` @@ -119,7 +120,7 @@ Within the Locator API, various methods such as `type()` can be used to interact ## Asynchronous operations -As explained previously, the k6 API is synchronous. However, since many browser operations happen asynchronously, and in order to follow the Playwright API more closely, we are working on migrating most xk6-browser methods to be asynchronous as well. +Since many browser operations happen asynchronously, and in order to follow the Playwright API more closely, we are working on migrating most xk6-browser methods to be asynchronous as well. At the moment, methods such as `page.goto()`, `page.waitForNavigation()` and `Element.click()` return [JavaScript promises](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Using_promises), and scripts must be written to handle this properly. @@ -130,33 +131,31 @@ To avoid timing errors or other race conditions in your script, if you have acti ```javascript -import { check } from 'k6'; import { chromium } from 'k6/x/browser'; +import { check } from 'k6' -export default function () { +export default async function () { const browser = chromium.launch({ headless: false }); const page = browser.newPage(); - page - .goto('https://test.k6.io/my_messages.php', { waitUntil: 'networkidle' }) - .then(() => { - // Enter login credentials and login - page.locator('input[name="login"]').type('admin'); - page.locator('input[name="password"]').type('123'); - - // Wait for asynchronous operations to complete - return Promise.all([ - page.waitForNavigation(), - page.locator('input[type="submit"]').click(), - ]).then(() => { - check(page, { - 'header': page.locator('h2').textContent() == 'Welcome, admin!', - }); - }); - }).finally(() => { - page.close(); - browser.close(); + try { + await page.goto('https://test.k6.io/my_messages.php', { waitUntil: 'networkidle' }); + + page.locator('input[name="login"]').type('admin'); + page.locator('input[name="password"]').type('123'); + + await Promise.all([ + page.waitForNavigation(), + page.locator('input[type="submit"]').click(), + ]); + + check(page, { + 'header': page.locator('h2').textContent() == 'Welcome, admin!', }); + } finally { + page.close(); + browser.close(); + } } ``` @@ -184,6 +183,8 @@ To run a browser-level and protocol-level test concurrently, you can use [scenar + + ```javascript import { chromium } from 'k6/x/browser'; import { check } from 'k6'; @@ -191,7 +192,7 @@ import http from 'k6/http'; export const options = { scenarios: { - messages: { + browser: { executor: 'constant-vus', exec: 'browser', vus: 1, @@ -206,24 +207,22 @@ export const options = { }, }; -export function browser() { +export async function browser() { const browser = chromium.launch({ headless: false }); const page = browser.newPage(); - page - .goto('https://test.k6.io/browser.php', { waitUntil: 'networkidle' }) - .then(() => { - page.locator('#checkbox1').check(); - - check(page, { - 'checkbox is checked': (p) => - p.locator('#checkbox-info-display').textContent() === 'Thanks for checking the box', - }); - }) - .finally(() => { - page.close(); - browser.close(); + try { + await page.goto('https://test.k6.io/browser.php', { waitUntil: 'networkidle' }); + + page.locator('#checkbox1').check(); + + check(page, { + 'checkbox is checked': page.locator('#checkbox-info-display').textContent() === 'Thanks for checking the box', }); + } finally { + page.close(); + browser.close(); + } } export function news() { diff --git a/src/data/markdown/docs/30 xk6-browser/02 API.md b/src/data/markdown/docs/30 xk6-browser/02 API.md index 82264852d3..424a816cdb 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API.md @@ -21,29 +21,29 @@ The table below lists the importable properties from the top level module (`'k6/ To emulate the browser behaviour on a mobile device and approximately measure the browser performance, you can import `devices` from `k6/x/browser`. - + - ```javascript - import { chromium, devices } from 'k6/x/browser'; + - export default function () { - const browser = chromium.launch({ headless: false }); - const iphoneX = devices['iPhone X']; - const context = browser.newContext(iphoneX); - const page = context.newPage(); +```javascript +import { chromium, devices } from 'k6/x/browser'; - page - .goto('https://test.k6.io/', { - waitUntil: 'networkidle', - }) - .finally(() => { - page.close(); - browser.close(); - }); +export default async function () { + const browser = chromium.launch({ headless: false }); + const iphoneX = devices['iPhone X']; + const context = browser.newContext(iphoneX); + const page = context.newPage(); + + try { + await page.goto('https://test.k6.io/', { waitUntil: 'networkidle' }) + } finally { + page.close(); + browser.close(); } - ``` +} +``` - + ## Browser-level APIs diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser.md b/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser.md index 9d587c948c..9601b3cbbb 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser.md @@ -21,21 +21,25 @@ A new Browser instance (hence a new browser process) can be created using the `l ### Example + + + + ```javascript import { chromium } from 'k6/x/browser'; -export default function () { +export default async function () { const browser = chromium.launch(); const context = browser.newContext(); const page = context.newPage(); - page - .goto('https://test.k6.io/', { - waitUntil: 'networkidle', - }) - .finally(() => { - page.close(); - browser.close(); - }); + try { + await page.goto('https://test.k6.io/', { waitUntil: 'networkidle' }); + } finally { + page.close(); + browser.close(); + } } ``` + + diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/newcontext--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/newcontext--options--.md index 421737ddea..228abf0b14 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/newcontext--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/newcontext--options--.md @@ -49,10 +49,14 @@ Creates and returns a new [BrowserContext](/javascript-api/xk6-browser/api/brows ### deviceScaleFactor example + + + + ```javascript import { chromium } from 'k6/x/browser'; -export default function () { +export default async function () { const browser = chromium.launch({ headless: false, }); @@ -66,13 +70,13 @@ export default function () { }); const page = context.newPage(); - page - .goto('https://test.k6.io/', { - waitUntil: 'networkidle', - }) - .finally(() => { - page.close(); - browser.close(); - }); + try { + await page.goto('https://test.k6.io/', { waitUntil: 'networkidle' }); + } finally { + page.close(); + browser.close(); + } } ``` + + diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/newpage--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/newpage--options--.md index 9eb9466d6c..05d52ea348 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/newpage--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/newpage--options--.md @@ -48,10 +48,14 @@ Creates a new [Page](/javascript-api/xk6-browser/api/page/) in a new [BrowserCon ### deviceScaleFactor example + + + + ```javascript import { chromium } from 'k6/x/browser'; -export default function () { +export default async function () { const browser = chromium.launch({ headless: false, }); @@ -64,13 +68,13 @@ export default function () { deviceScaleFactor: 3, }); - page - .goto('https://test.k6.io/', { - waitUntil: 'networkidle', - }) - .finally(() => { - page.close(); - browser.close(); - }); + try { + await page.goto('https://test.k6.io/', { waitUntil: 'networkidle' }); + } finally { + page.close(); + browser.close(); + } } ``` + + diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/newPage.md b/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/newPage.md index 3a4d169da4..78aa76d156 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/newPage.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/newPage.md @@ -17,22 +17,22 @@ Uses the `BrowserContext` to create a new [Page](/javascript-api/xk6-browser/api + + ```javascript import { chromium } from 'k6/x/browser'; -export default function () { +export default async function () { const browser = chromium.launch(); const context = browser.newContext(); const page = context.newPage(); - page - .goto('https://test.k6.io/browser.php', { - waitUntil: 'networkidle', - }) - .finally(() => { - page.close(); - browser.close(); - }); + try { + await page.goto('https://test.k6.io/browser.php', { waitUntil: 'networkidle' }); + } finally { + page.close(); + browser.close(); + } } ``` diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/setDefaultNavigationTimeout.md b/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/setDefaultNavigationTimeout.md index 2506c112f7..441e8b120b 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/setDefaultNavigationTimeout.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/setDefaultNavigationTimeout.md @@ -28,14 +28,12 @@ const context = browser.newContext(); const page = context.newPage(); context.setDefaultNavigationTimeout(1000); // 1s -page - .goto('https://httpbin.test.k6.io/delay/5', { - waitUntil: 'networkidle', - }) - .finally(() => { - page.close(); - browser.close(); - }); +try { + await page.goto('https://httpbin.test.k6.io/delay/5', { waitUntil: 'networkidle' }); +} finally { + page.close(); + browser.close(); +} ``` diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/setOffline.md b/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/setOffline.md index deef1521fa..da9e5e3ebf 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/setOffline.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/setOffline.md @@ -14,10 +14,12 @@ Toggles the `BrowserContext`'s connectivity on/off. + + ```javascript import { chromium } from 'k6/x/browser'; -export default function () { +export default async function () { const browser = chromium.launch(); const context = browser.newContext(); @@ -25,15 +27,16 @@ export default function () { const page = context.newPage(); - page - .goto('https://test.k6.io/browser.php', { - // Will not be able to load the page - waitUntil: 'networkidle', - }) - .finally(() => { - context.close(); - browser.close(); + try { + await page + .goto('https://test.k6.io/browser.php', { + // Will not be able to load the page + waitUntil: 'networkidle' }); + } finally { + page.close(); + browser.close(); + } } ``` diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/03 BrowserType.md b/src/data/markdown/docs/30 xk6-browser/02 API/03 BrowserType.md index 4280d5c933..a40efdf119 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/03 BrowserType.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/03 BrowserType.md @@ -23,22 +23,18 @@ The `BrowserType` is the entry point into launching a browser process; `chromium ```javascript import { chromium } from 'k6/x/browser'; -export default function () { +export default async function () { const browser = chromium.launch(); const context = browser.newContext(); const page = context.newPage(); - page - .goto('https://test.k6.io/', { - waitUntil: 'networkidle', - }) - .then(() => { - page.screenshot({ path: `example-chromium.png` }); - }) - .finally(() => { - page.close(); - browser.close(); - }); + try { + await page.goto('https://test.k6.io/', { waitUntil: 'networkidle' }); + page.screenshot({ path: `example-chromium.png` }); + } finally { + page.close(); + browser.close(); + } } ``` diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/03 BrowserType/launch--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/03 BrowserType/launch--options--.md index 036500bf69..3b7ae60eeb 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/03 BrowserType/launch--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/03 BrowserType/launch--options--.md @@ -35,7 +35,7 @@ Launches a new browser process. ```javascript import { chromium } from 'k6/x/browser'; -export default function () { +export default async function () { const browser = chromium.launch({ args: ['show-property-changed-rects'], debug: true, @@ -48,17 +48,13 @@ export default function () { const context = browser.newContext(); const page = context.newPage(); - page - .goto('http://whatsmyuseragent.org/', { - waitUntil: 'networkidle', - }) - .then(() => { - page.screenshot({ path: `example-chromium.png` }); - }) - .finally(() => { - page.close(); - browser.close(); - }); + try { + await page.goto('http://whatsmyuseragent.org/', { waitUntil: 'networkidle' }); + page.screenshot({ path: `example-chromium.png` }); + } finally { + page.close(); + browser.close(); + } } ``` diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/04-element-handle.md b/src/data/markdown/docs/30 xk6-browser/02 API/04-element-handle.md index 531b8c6997..31cfde1d28 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/04-element-handle.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/04-element-handle.md @@ -54,7 +54,7 @@ excerpt: "xk6-browser: ElementHandle Class" import { check } from 'k6'; import { chromium } from 'k6/x/browser'; -export default function() { +export default async function() { const browser = chromium.launch({ headless: false, slowMo: '500ms' // slow down by 500ms @@ -63,30 +63,27 @@ export default function() { const page = context.newPage(); // Goto front page, find login link and click it - page - .goto('https://test.k6.io/', { waitUntil: 'networkidle' }) - .then(() => { - return Promise.all([ - page.waitForNavigation(), - page.locator('a[href="/my_messages.php"]').click(), - ]); - }).then(() => { - // Enter login credentials and login - page.locator('input[name="login"]').type('admin'); - page.locator('input[name="password"]').type('123'); - - return Promise.all([ - page.waitForNavigation(), - page.locator('input[type="submit"]').click(), - ]); - }).then(() => { - check(page, { - 'header': page.locator('h2').textContent() == 'Welcome, admin!', - }); - }).finally(() => { - page.close(); - browser.close(); + try { + await page.goto('https://test.k6.io/', { waitUntil: 'networkidle' }); + await Promise.all([ + page.waitForNavigation(), + page.locator('a[href="/my_messages.php"]').click(), + ]); + // Enter login credentials and login + page.locator('input[name="login"]').type('admin'); + page.locator('input[name="password"]').type('123'); + + await Promise.all([ + page.waitForNavigation(), + page.locator('input[type="submit"]').click(), + ]); + check(page, { + 'header': page.locator('h2').textContent() == 'Welcome, admin!', }); + } finally { + page.close(); + browser.close(); + } } ``` diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator.md index 3ab073f4d7..dfbd9624c8 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator.md @@ -48,65 +48,65 @@ Locator can be created with the [page.locator(selector[, options])](/javascript- ```javascript import { chromium } from 'k6/x/browser'; -export default function () { +export default async function () { const browser = chromium.launch({ headless: false, }); const context = browser.newContext(); const page = context.newPage(); - page - .goto("https://test.k6.io/flip_coin.php", { waitUntil: "networkidle" }) - .then(() => { - /* - In this example, we will use two locators, matching a - different betting button on the page. If you were to query - the buttons once and save them as below, you would see an - error after the initial navigation. Try it! - - const heads = page.$("input[value='Bet on heads!']"); - const tails = page.$("input[value='Bet on tails!']"); - - The Locator API allows you to get a fresh element handle each - time you use one of the locator methods. And, you can carry a - locator across frame navigations. Let's create two locators; - each locates a button on the page. - */ - const heads = page.locator("input[value='Bet on heads!']"); - const tails = page.locator("input[value='Bet on tails!']"); + try { + await page.goto("https://test.k6.io/flip_coin.php", { + waitUntil: "networkidle", + }) - const currentBet = page.locator("//p[starts-with(text(),'Your bet: ')]"); + /* + In this example, we will use two locators, matching a + different betting button on the page. If you were to query + the buttons once and save them as below, you would see an + error after the initial navigation. Try it! + + const heads = page.$("input[value='Bet on heads!']"); + const tails = page.$("input[value='Bet on tails!']"); + + The Locator API allows you to get a fresh element handle each + time you use one of the locator methods. And, you can carry a + locator across frame navigations. Let's create two locators; + each locates a button on the page. + */ + const heads = page.locator("input[value='Bet on heads!']"); + const tails = page.locator("input[value='Bet on tails!']"); + + const currentBet = page.locator("//p[starts-with(text(),'Your bet: ')]"); - // In the following Promise.all the tails locator clicks - // on the tails button by using the locator's selector. - // Since clicking on each button causes page navigation, - // waitForNavigation is needed -- this is because the page - // won't be ready until the navigation completes. - // Setting up the waitForNavigation first before the click - // is important to avoid race conditions. - Promise.all([ - page.waitForNavigation(), - tails.click(), - ]).then(() => { - console.log(currentBet.innerText()); - // the heads locator clicks on the heads button - // by using the locator's selector. - return Promise.all([ - page.waitForNavigation(), - heads.click(), - ]); - }).then(() => { - console.log(currentBet.innerText()); - return Promise.all([ - page.waitForNavigation(), - tails.click(), - ]); - }).finally(() => { - console.log(currentBet.innerText()); - page.close(); - browser.close(); - }) - }); + // In the following Promise.all the tails locator clicks + // on the tails button by using the locator's selector. + // Since clicking on each button causes page navigation, + // waitForNavigation is needed -- this is because the page + // won't be ready until the navigation completes. + // Setting up the waitForNavigation first before the click + // is important to avoid race conditions. + await Promise.all([ + page.waitForNavigation(), + tails.click(), + ]); + console.log(currentBet.innerText()); + // the heads locator clicks on the heads button + // by using the locator's selector. + await Promise.all([ + page.waitForNavigation(), + heads.click(), + ]); + console.log(currentBet.innerText()); + await Promise.all([ + page.waitForNavigation(), + tails.click(), + ]); + console.log(currentBet.innerText()); + } finally { + page.close(); + browser.close(); + } } ``` diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/check--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/check--options--.md index 351db34431..adeb0da71b 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/check--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/check--options--.md @@ -34,12 +34,9 @@ Use this method to select an `input` checkbox. ```javascript -page - .goto('https://test.k6.io/browser.php') - .then(() => { - const checkbox = page.locator("#checkbox1"); - checkbox.check(); - }); +await page.goto('https://test.k6.io/browser.php'); +const checkbox = page.locator("#checkbox1"); +checkbox.check(); ``` diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/click--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/click--options--.md index 080d489f64..e859ddd8ba 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/click--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/click--options--.md @@ -37,12 +37,9 @@ Mouse click on the chosen element. ```javascript -page - .goto('https://test.k6.io/browser.php') - .then(() => { - const button = page.locator("#counter-button"); - button.click(); - }); +await page.goto('https://test.k6.io/browser.php'); +const button = page.locator("#counter-button"); +button.click(); ``` diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/dblclick--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/dblclick--options--.md index 4035ff82cf..f8e238e44e 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/dblclick--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/dblclick--options--.md @@ -37,12 +37,9 @@ Mouse double click on the chosen element. ```javascript -page - .goto('https://test.k6.io/browser.php') - .then(() => { - const button = page.locator("#counter-button"); - button.dblclick(); - }); +await page.goto('https://test.k6.io/browser.php'); +const button = page.locator("#counter-button"); +button.dblclick(); ``` diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/dispatchevent--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/dispatchevent--options--.md index a5c2c90509..83cefc5047 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/dispatchevent--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/dispatchevent--options--.md @@ -35,12 +35,9 @@ Since eventInit is event-specific, please refer to the events documentation for ```javascript -page - .goto('https://test.k6.io/browser.php') - .then(() => { - const button = page.locator("#counter-button"); - button.dispatchEvent('click'); - }); +await page.goto('https://test.k6.io/browser.php'); +const button = page.locator("#counter-button"); +button.dispatchEvent('click'); ``` diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/fill--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/fill--options--.md index 173b7c7257..b4285d8989 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/fill--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/fill--options--.md @@ -24,12 +24,9 @@ Fill an `input`, `textarea` or `contenteditable` element with the provided value ```javascript -page - .goto('https://test.k6.io/browser.php') - .then(() => { - const textbox = page.locator("#text1"); - textbox.fill('hello world!'); - }); +await page.goto('https://test.k6.io/browser.php'); +const textbox = page.locator("#text1"); +textbox.fill('hello world!'); ``` diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/focus--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/focus--options--.md index 4ea0e1462b..8d45f1037b 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/focus--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/focus--options--.md @@ -21,12 +21,9 @@ Calls [focus](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/focus ```javascript -page - .goto('https://test.k6.io/browser.php') - .then(() => { - const textbox = page.locator("#text1"); - textbox.focus(); - }); +await page.goto('https://test.k6.io/browser.php'); +const textbox = page.locator("#text1"); +textbox.focus(); ``` diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/getattribute--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/getattribute--options--.md index d8b2dd7754..c3a616faa2 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/getattribute--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/getattribute--options--.md @@ -28,13 +28,10 @@ Returns the element attribute value for the given attribute name. ```javascript -page - .goto('https://test.k6.io/browser.php') - .then(() => { - const textInput = page.locator('#text1'); - const attribute = textInput.getAttribute('onfocus'); - console.log(attribute); - }); +await page.goto('https://test.k6.io/browser.php'); +const textInput = page.locator('#text1'); +const attribute = textInput.getAttribute('onfocus'); +console.log(attribute); ``` diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/hover--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/hover--options--.md index d791831ae5..4dafb4e1df 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/hover--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/hover--options--.md @@ -35,12 +35,9 @@ Hovers over the element. ```javascript -page - .goto('https://test.k6.io/browser.php') - .then(() => { - const offScreenElement = page.locator("#off-screen"); - offScreenElement.hover(); - }); +await page.goto('https://test.k6.io/browser.php'); +const offScreenElement = page.locator("#off-screen"); +offScreenElement.hover(); ``` diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/innerhtml--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/innerhtml--options--.md index d19425009f..9a8fc31850 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/innerhtml--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/innerhtml--options--.md @@ -27,13 +27,10 @@ Returns the `element.innerHTML`. ```javascript -page - .goto('https://test.k6.io/browser.php') - .then(() => { - const offScreen = page.locator('#off-screen'); - const innerHTML = offScreen.innerHTML(); - console.log(innerHTML); - }); +await page.goto('https://test.k6.io/browser.php'); +const offScreen = page.locator('#off-screen'); +const innerHTML = offScreen.innerHTML(); +console.log(innerHTML); ``` diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/innertext--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/innertext--options--.md index efb3f79481..f8977a2da8 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/innertext--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/innertext--options--.md @@ -27,13 +27,10 @@ Returns the `element.innerText`. ```javascript -page - .goto('https://test.k6.io/browser.php') - .then(() => { - const offScreen = page.locator('#off-screen'); - const innerText = offScreen.innerText(); - console.log(innerText); // Off page div - }); +await page.goto('https://test.k6.io/browser.php'); +const offScreen = page.locator('#off-screen'); +const innerText = offScreen.innerText(); +console.log(innerText); // Off page div ``` diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/inputvalue--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/inputvalue--options--.md index 2223bc34a6..225b647c8b 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/inputvalue--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/inputvalue--options--.md @@ -27,14 +27,11 @@ Returns `input.value` for the selected `input`, `textarea` or `select` element. ```javascript -page - .goto('https://test.k6.io/browser.php') - .then(() => { - const textInput = page.locator('#text1'); - textInput.fill("Hello world!"); - const inputValue = textInput.inputValue(); - console.log(inputValue); - }); +await page.goto('https://test.k6.io/browser.php'); +const textInput = page.locator('#text1'); +textInput.fill("Hello world!"); +const inputValue = textInput.inputValue(); +console.log(inputValue); ``` diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/ischecked--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/ischecked--options--.md index 3f76d1374a..1b1d500dd0 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/ischecked--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/ischecked--options--.md @@ -27,14 +27,11 @@ Checks to see if the `checkbox` `input` type is selected or not. ```javascript -page - .goto('https://test.k6.io/browser.php') - .then(() => { - const checkbox = page.locator('#checkbox1'); - if (!checkbox.isChecked()) { - checkbox.check(); - } - }); +await page.goto('https://test.k6.io/browser.php'); +const checkbox = page.locator('#checkbox1'); +if (!checkbox.isChecked()) { + checkbox.check(); +} ``` diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/isdisabled--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/isdisabled--options--.md index 873364d562..8ed74b1317 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/isdisabled--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/isdisabled--options--.md @@ -27,14 +27,11 @@ Checks if the element is `disabled`. ```javascript -page - .goto('https://test.k6.io/browser.php') - .then(() => { - const text = page.locator('#input-text-disabled'); - if (text.isDisabled()) { - console.log("element is disabled") - } - }); +await page.goto('https://test.k6.io/browser.php'); +const text = page.locator('#input-text-disabled'); +if (text.isDisabled()) { + console.log("element is disabled") +} ``` diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/iseditable--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/iseditable--options--.md index 7656ccb2ed..aa948f7884 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/iseditable--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/iseditable--options--.md @@ -27,14 +27,11 @@ Checks if the element is `editable`. ```javascript -page - .goto('https://test.k6.io/browser.php') - .then(() => { - const text = page.locator('#text1'); - if (text.isEditable()) { - text.fill("hello world!"); - } - }); +await page.goto('https://test.k6.io/browser.php'); +const text = page.locator('#text1'); +if (text.isEditable()) { + text.fill("hello world!"); +} ``` diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/isenabled--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/isenabled--options--.md index 0ca6f1fcdb..f017deebb2 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/isenabled--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/isenabled--options--.md @@ -27,14 +27,11 @@ Checks if the element is `enabled`. ```javascript -page - .goto('https://test.k6.io/browser.php') - .then(() => { - const text = page.locator('#text1'); - if (text.isEnabled()) { - console.log("element is enabled"); - } - }); +await page.goto('https://test.k6.io/browser.php'); +const text = page.locator('#text1'); +if (text.isEnabled()) { + console.log("element is enabled"); +} ``` diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/ishidden--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/ishidden--options--.md index ffaba65591..de55eaee20 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/ishidden--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/ishidden--options--.md @@ -27,14 +27,11 @@ Checks if the element is `hidden`. ```javascript -page - .goto('https://test.k6.io/browser.php') - .then(() => { - const text = page.locator('#input-text-hidden'); - if (text.isHidden()) { - console.log("element is hidden"); - } - }); +await page.goto('https://test.k6.io/browser.php'); +const text = page.locator('#input-text-hidden'); +if (text.isHidden()) { + console.log("element is hidden"); +} ``` diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/isvisible--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/isvisible--options--.md index 32b5f40b79..b45c9fefe2 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/isvisible--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/isvisible--options--.md @@ -27,14 +27,11 @@ Checks if the element is `visible`. ```javascript -page - .goto('https://test.k6.io/browser.php') - .then(() => { - const text = page.locator('#text1'); - if (text.isVisible()) { - console.log("element is visible"); - } - }); +await page.goto('https://test.k6.io/browser.php'); +const text = page.locator('#text1'); +if (text.isVisible()) { + console.log("element is visible"); +} ``` diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/press--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/press--options--.md index 8dd11235f8..aa91344c88 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/press--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/press--options--.md @@ -24,14 +24,11 @@ Press a single key on the keyboard or a combination of keys. ```javascript -page - .goto('https://test.k6.io/browser.php') - .then(() => { - const text = page.locator('#text1'); - text.press('i'); - text.press('ArrowLeft'); - text.press('h'); - }); +await page.goto('https://test.k6.io/browser.php'); +const text = page.locator('#text1'); +text.press('i'); +text.press('ArrowLeft'); +text.press('h'); ``` diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/selectoption--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/selectoption--options--.md index 9a53e1a363..add6c6668d 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/selectoption--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/selectoption--options--.md @@ -37,12 +37,9 @@ Select one or more options which match the values. ```javascript -page - .goto('https://test.k6.io/browser.php') - .then(() => { - const options = page.locator('#numbers-options'); - options.selectOption('three'); - }); +await page.goto('https://test.k6.io/browser.php'); +const options = page.locator('#numbers-options'); +options.selectOption('three'); ``` diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/tap--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/tap--options--.md index dbe6eb7cc2..d5d76c90b4 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/tap--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/tap--options--.md @@ -39,12 +39,9 @@ const page = context.newPage({ hasTouch: true, }); -page - .goto('https://test.k6.io/browser.php') - .then(() => { - const options = page.locator("#numbers-options"); - options.tap(); - }); +await page.goto('https://test.k6.io/browser.php'); +const options = page.locator("#numbers-options"); +options.tap(); ``` diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/textcontent--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/textcontent--options--.md index e92496882c..b65120a979 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/textcontent--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/textcontent--options--.md @@ -27,18 +27,15 @@ Returns the `element.textContent`. ```javascript -page - .goto('https://test.k6.io/browser.php') - .then(() => { - const options = page.locator("#checkbox1"); - console.log(options.textContent()); /* Zero - One - Two - Three - Four - Five - */ - }); +await page.goto('https://test.k6.io/browser.php'); +const options = page.locator("#checkbox1"); +console.log(options.textContent()); /* Zero + One + Two + Three + Four + Five + */ ``` diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/type--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/type--options--.md index 3f848a8573..5319b6b852 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/type--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/type--options--.md @@ -24,12 +24,9 @@ Type in the text into the input field. ```javascript -page - .goto('https://test.k6.io/browser.php') - .then(() => { - const text = page.locator("#text1"); - text.type('hello world!'); - }); +await page.goto('https://test.k6.io/browser.php'); +const text = page.locator("#text1"); +text.type('hello world!'); ``` diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/uncheck--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/uncheck--options--.md index 07ec484486..b07501f681 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/uncheck--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/uncheck--options--.md @@ -34,13 +34,10 @@ Unselect the `input` checkbox. ```javascript -page - .goto('https://test.k6.io/browser.php') - .then(() => { - const checkbox = page.locator("#checkbox1"); - checkbox.check(); - checkbox.uncheck(); - }); +await page.goto('https://test.k6.io/browser.php'); +const checkbox = page.locator("#checkbox1"); +checkbox.check(); +checkbox.uncheck(); ``` diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/waitfor--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/waitfor--options--.md index b11e207ca6..0d93cda7cc 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/waitfor--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/waitfor--options--.md @@ -29,14 +29,11 @@ Wait for the element to be in a particular state e.g. `visible`. ```javascript -page - .goto('https://test.k6.io/browser.php') - .then(() => { - const text = page.locator('#input-text-hidden'); - text.waitFor({ - state: 'hidden', - }); - }); +await page.goto('https://test.k6.io/browser.php'); +const text = page.locator('#input-text-hidden'); +text.waitFor({ + state: 'hidden', +}); ``` diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/10-page.md b/src/data/markdown/docs/30 xk6-browser/02 API/10-page.md index 882f753f76..c91bb5f7cc 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/10-page.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/10-page.md @@ -85,29 +85,26 @@ export default function() { const page = context.newPage(); // Goto front page, find login link and click it - page - .goto('https://test.k6.io/', { waitUntil: 'networkidle' }) - .then(() => { - return Promise.all([ - page.waitForNavigation(), - page.locator('a[href="/my_messages.php"]').click(), - ]); - }).then(() => { - // Enter login credentials and login - page.locator('input[name="login"]').type('admin'); - page.locator('input[name="password"]').type('123'); - - return Promise.all([ - page.waitForNavigation(), - page.locator('input[type="submit"]').click(), - ]); - }).then(() => { - check(page, { - 'header': page.locator('h2').textContent() == 'Welcome, admin!', - }); - }).finally(() => { - page.close(); - browser.close(); + try { + await page.goto('https://test.k6.io/', { waitUntil: 'networkidle' }); + await Promise.all([ + page.waitForNavigation(), + page.locator('a[href="/my_messages.php"]').click(), + ]); + // Enter login credentials and login + page.locator('input[name="login"]').type('admin'); + page.locator('input[name="password"]').type('123'); + + await Promise.all([ + page.waitForNavigation(), + page.locator('input[type="submit"]').click(), + ]); + check(page, { + 'header': page.locator('h2').textContent() == 'Welcome, admin!', }); + } finally { + page.close(); + browser.close(); + } } ``` diff --git a/src/data/markdown/translated-guides/en/06 Testing Guides/03 Load testing websites.md b/src/data/markdown/translated-guides/en/06 Testing Guides/03 Load testing websites.md index ab2b5d1817..938da0919c 100644 --- a/src/data/markdown/translated-guides/en/06 Testing Guides/03 Load testing websites.md +++ b/src/data/markdown/translated-guides/en/06 Testing Guides/03 Load testing websites.md @@ -178,40 +178,45 @@ However, k6 has an extension called [xk6-browser](https://k6.io/docs/javascript- The following is an example of a browser-based load testing script in k6 using xk6-browser on a dummy website. Instead of making an HTTP request, the script views the homepage, then looks for and clicks on a link to the product page. + + + + ```javascript import { chromium } from 'k6/x/browser'; import { sleep } from 'k6'; -export default function () { +export default async function () { const browser = chromium.launch({ headless: false }); const page = browser.newPage(); // 01. Go to the homepage - page - .goto('https://mywebsite.com', { waitUntil: 'networkidle' }) - .then(() => { - page.waitForSelector('p[class="woocommerce-result-count"]"]'); - page.screenshot({ path: 'screenshots/01_homepage.png' }); - - sleep(4); - - // 02. View products - const element = page.$( - 'a[class="woocommerce-LoopProduct-link woocommerce-loop-product__link"]' - ); - element.click(); - page.waitForSelector('button[name="add-to-cart"]'); - page.screenshot({ path: 'screenshots/02_view-product.png' }); - - sleep(1); - }) - .finally(() => { - page.close(); - browser.close(); - }); + try { + await page.goto('https://mywebsite.com', { waitUntil: 'networkidle' }); + + page.waitForSelector('p[class="woocommerce-result-count"]"]'); + page.screenshot({ path: 'screenshots/01_homepage.png' }); + + sleep(4); + + // 02. View products + const element = page.$( + 'a[class="woocommerce-LoopProduct-link woocommerce-loop-product__link"]' + ); + element.click(); + page.waitForSelector('button[name="add-to-cart"]'); + page.screenshot({ path: 'screenshots/02_view-product.png' }); + + sleep(1); + } finally { + page.close(); + browser.close(); + } } ``` + + #### Tips for writing browser-level scripts From a4fd4b9e909dc83c2a394958bc5b197f290cd6b0 Mon Sep 17 00:00:00 2001 From: mdcruz Date: Wed, 8 Feb 2023 11:44:01 +0000 Subject: [PATCH 02/15] remove eslint skip --- .../01 Get started/01 Welcome.md | 2 -- .../01 Get started/03 Running xk6-browser.md | 8 ------ .../markdown/docs/30 xk6-browser/02 API.md | 2 -- .../docs/30 xk6-browser/02 API/01 Browser.md | 2 -- .../02 API/01 Browser/contexts.md | 2 -- .../01 Browser/newcontext--options--.md | 2 -- .../02 API/01 Browser/newpage--options--.md | 2 -- .../02 API/01 Browser/on--event--.md | 2 -- .../02 BrowserContext/clearPermissions.md | 15 ++++++----- .../02 BrowserContext/grantPermissions.md | 15 ++++++----- .../02 API/02 BrowserContext/newPage.md | 2 -- .../setDefaultNavigationTimeout.md | 25 +++++++++-------- .../02 BrowserContext/setDefaultTimeout.md | 15 ++++++----- .../02 BrowserContext/setGeolocation.md | 11 +++++--- .../02 API/02 BrowserContext/setOffline.md | 2 -- .../30 xk6-browser/02 API/03 BrowserType.md | 2 -- .../02 API/03 BrowserType/executablePath.md | 3 --- .../03 BrowserType/launch--options--.md | 2 -- .../02 API/03 BrowserType/name.md | 3 --- .../02 API/04-element-handle.md | 2 -- .../docs/30 xk6-browser/02 API/08 Locator.md | 2 -- .../02 API/08 Locator/check--options--.md | 15 +++++++---- .../02 API/08 Locator/click--options--.md | 15 +++++++---- .../02 API/08 Locator/dblclick--options--.md | 15 +++++++---- .../08 Locator/dispatchevent--options--.md | 15 +++++++---- .../02 API/08 Locator/fill--options--.md | 15 +++++++---- .../02 API/08 Locator/focus--options--.md | 15 +++++++---- .../08 Locator/getattribute--options--.md | 17 +++++++----- .../02 API/08 Locator/hover--options--.md | 15 +++++++---- .../02 API/08 Locator/innerhtml--options--.md | 17 +++++++----- .../02 API/08 Locator/innertext--options--.md | 17 +++++++----- .../08 Locator/inputvalue--options--.md | 19 ++++++++----- .../02 API/08 Locator/ischecked--options--.md | 17 +++++++----- .../08 Locator/isdisabled--options--.md | 17 +++++++----- .../08 Locator/iseditable--options--.md | 17 +++++++----- .../02 API/08 Locator/isenabled--options--.md | 17 +++++++----- .../02 API/08 Locator/ishidden--options--.md | 17 +++++++----- .../02 API/08 Locator/isvisible--options--.md | 17 +++++++----- .../02 API/08 Locator/press--options--.md | 19 ++++++++----- .../08 Locator/selectoption--options--.md | 15 +++++++---- .../02 API/08 Locator/tap--options--.md | 20 ++++++++------ .../08 Locator/textcontent--options--.md | 27 +++++++++++-------- .../02 API/08 Locator/type--options--.md | 15 +++++++---- .../02 API/08 Locator/uncheck--options--.md | 17 +++++++----- .../02 API/08 Locator/waitfor--options--.md | 19 ++++++++----- .../docs/30 xk6-browser/02 API/10-page.md | 4 +-- 46 files changed, 313 insertions(+), 221 deletions(-) diff --git a/src/data/markdown/docs/30 xk6-browser/01 Get started/01 Welcome.md b/src/data/markdown/docs/30 xk6-browser/01 Get started/01 Welcome.md index 758c2150ea..5f5b5e791b 100644 --- a/src/data/markdown/docs/30 xk6-browser/01 Get started/01 Welcome.md +++ b/src/data/markdown/docs/30 xk6-browser/01 Get started/01 Welcome.md @@ -41,8 +41,6 @@ The main use case for xk6-browser is to test performance on the browser level. B - - ```javascript import { chromium } from 'k6/x/browser'; import { check } from 'k6' diff --git a/src/data/markdown/docs/30 xk6-browser/01 Get started/03 Running xk6-browser.md b/src/data/markdown/docs/30 xk6-browser/01 Get started/03 Running xk6-browser.md index eb7c8a454c..fa56f080e6 100644 --- a/src/data/markdown/docs/30 xk6-browser/01 Get started/03 Running xk6-browser.md +++ b/src/data/markdown/docs/30 xk6-browser/01 Get started/03 Running xk6-browser.md @@ -27,8 +27,6 @@ To run a simple local script: - - ```javascript import { chromium } from 'k6/x/browser'; @@ -88,8 +86,6 @@ You can also use `page.$()` instead of `page.locator()`. You can find the differ - - ```javascript import { chromium } from 'k6/x/browser'; @@ -128,8 +124,6 @@ To avoid timing errors or other race conditions in your script, if you have acti - - ```javascript import { chromium } from 'k6/x/browser'; import { check } from 'k6' @@ -183,8 +177,6 @@ To run a browser-level and protocol-level test concurrently, you can use [scenar - - ```javascript import { chromium } from 'k6/x/browser'; import { check } from 'k6'; diff --git a/src/data/markdown/docs/30 xk6-browser/02 API.md b/src/data/markdown/docs/30 xk6-browser/02 API.md index 424a816cdb..0fbb436553 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API.md @@ -23,8 +23,6 @@ To emulate the browser behaviour on a mobile device and approximately measure th - - ```javascript import { chromium, devices } from 'k6/x/browser'; diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser.md b/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser.md index 9601b3cbbb..621d89c4c1 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser.md @@ -23,8 +23,6 @@ A new Browser instance (hence a new browser process) can be created using the `l - - ```javascript import { chromium } from 'k6/x/browser'; diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/contexts.md b/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/contexts.md index be33e280bf..0bba03560b 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/contexts.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/contexts.md @@ -14,8 +14,6 @@ Access all open [BrowserContext](/javascript-api/xk6-browser/api/browsercontext/ ### Example - - ```javascript import { chromium } from 'k6/x/browser'; diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/newcontext--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/newcontext--options--.md index 228abf0b14..dd59c6a1fb 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/newcontext--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/newcontext--options--.md @@ -51,8 +51,6 @@ Creates and returns a new [BrowserContext](/javascript-api/xk6-browser/api/brows - - ```javascript import { chromium } from 'k6/x/browser'; diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/newpage--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/newpage--options--.md index 05d52ea348..b65f9141ea 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/newpage--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/newpage--options--.md @@ -50,8 +50,6 @@ Creates a new [Page](/javascript-api/xk6-browser/api/page/) in a new [BrowserCon - - ```javascript import { chromium } from 'k6/x/browser'; diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/on--event--.md b/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/on--event--.md index 013a1fe754..0b17a0aaf0 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/on--event--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/on--event--.md @@ -22,8 +22,6 @@ The returned promise will be resolved when the [Browser](/javascript-api/xk6-bro ### Example - - ```javascript import { chromium } from 'k6/x/browser'; import { check, sleep } from 'k6'; diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/clearPermissions.md b/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/clearPermissions.md index 976bfdb9f0..12024fa048 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/clearPermissions.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/clearPermissions.md @@ -17,13 +17,16 @@ Clears all permission overrides for the `BrowserContext`. - - ```javascript -const context = browser.newContext(); -context.grantPermissions(['clipboard-read']); -// do stuff ... -context.clearPermissions(); +import { chromium } from 'k6/x/browser'; + +export default function () { + const browser = chromium.launch(); + const context = browser.newContext(); + context.grantPermissions(['clipboard-read']); + // do stuff ... + context.clearPermissions(); +} ``` diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/grantPermissions.md b/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/grantPermissions.md index f3376895c3..aa841fd19c 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/grantPermissions.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/grantPermissions.md @@ -20,13 +20,16 @@ Grants specified permissions to the `BrowserContext`. Only grants corresponding - - ```javascript -const context = browser.newContext(); -context.grantPermissions(['clipboard-read', 'clipboard-write'], { - origin: 'https://example.com/', -}); +import { chromium } from 'k6/x/browser'; + +export default function () { + const browser = chromium.launch(); + const context = browser.newContext(); + context.grantPermissions(['clipboard-read', 'clipboard-write'], { + origin: 'https://example.com/', + }); +} ``` diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/newPage.md b/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/newPage.md index 78aa76d156..2fc179bb4e 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/newPage.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/newPage.md @@ -17,8 +17,6 @@ Uses the `BrowserContext` to create a new [Page](/javascript-api/xk6-browser/api - - ```javascript import { chromium } from 'k6/x/browser'; diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/setDefaultNavigationTimeout.md b/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/setDefaultNavigationTimeout.md index 441e8b120b..46a26fe95c 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/setDefaultNavigationTimeout.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/setDefaultNavigationTimeout.md @@ -21,18 +21,21 @@ Sets the default maximum navigation timeout for [Page.goto()](https://playwright - - ```javascript -const context = browser.newContext(); -const page = context.newPage(); -context.setDefaultNavigationTimeout(1000); // 1s - -try { - await page.goto('https://httpbin.test.k6.io/delay/5', { waitUntil: 'networkidle' }); -} finally { - page.close(); - browser.close(); +import { chromium } from 'k6/x/browser'; + +export default async function () { + const browser = chromium.launch(); + const context = browser.newContext(); + const page = context.newPage(); + context.setDefaultNavigationTimeout(1000); // 1s + + try { + await page.goto('https://httpbin.test.k6.io/delay/5', { waitUntil: 'networkidle' }); + } finally { + page.close(); + browser.close(); + } } ``` diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/setDefaultTimeout.md b/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/setDefaultTimeout.md index af318639f8..517892c338 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/setDefaultTimeout.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/setDefaultTimeout.md @@ -21,13 +21,16 @@ Sets the default maximum timeout for all methods accepting a `timeout` option in - - ```javascript -const context = browser.newContext(); -context.setDefaultTimeout(1000); // 1s -const page = context.newPage(); -page.click('h2'); // times out +import { chromium } from 'k6/x/browser'; + +export default function () { + const browser = chromium.launch(); + const context = browser.newContext(); + context.setDefaultTimeout(1000); // 1s + const page = context.newPage(); + page.click('h2'); // times out +} ``` diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/setGeolocation.md b/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/setGeolocation.md index c50ae3b4b4..b06e0ce385 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/setGeolocation.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/setGeolocation.md @@ -27,11 +27,14 @@ Sets the context's geolocation. - - ```javascript -const context = browser.newContext(); -context.setGeolocation({latitude: 59.95, longitude: 30.31667}); +import { chromium } from 'k6/x/browser'; + +export default function () { + const browser = chromium.launch(); + const context = browser.newContext(); + context.setGeolocation({latitude: 59.95, longitude: 30.31667}); +} ``` diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/setOffline.md b/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/setOffline.md index da9e5e3ebf..d81a482dcc 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/setOffline.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/setOffline.md @@ -14,8 +14,6 @@ Toggles the `BrowserContext`'s connectivity on/off. - - ```javascript import { chromium } from 'k6/x/browser'; diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/03 BrowserType.md b/src/data/markdown/docs/30 xk6-browser/02 API/03 BrowserType.md index a40efdf119..495f24a157 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/03 BrowserType.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/03 BrowserType.md @@ -18,8 +18,6 @@ The `BrowserType` is the entry point into launching a browser process; `chromium - - ```javascript import { chromium } from 'k6/x/browser'; diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/03 BrowserType/executablePath.md b/src/data/markdown/docs/30 xk6-browser/02 API/03 BrowserType/executablePath.md index a978032adf..c9acfd566d 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/03 BrowserType/executablePath.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/03 BrowserType/executablePath.md @@ -15,14 +15,11 @@ Returns the path where the extension expects to find the browser executable. ## Example - - ```javascript import { chromium } from 'k6/x/browser'; export default function () { const execPath = chromium.executablePath(); console.log(execPath); - ... } ``` \ No newline at end of file diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/03 BrowserType/launch--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/03 BrowserType/launch--options--.md index 3b7ae60eeb..e3e56798b0 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/03 BrowserType/launch--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/03 BrowserType/launch--options--.md @@ -30,8 +30,6 @@ Launches a new browser process. - - ```javascript import { chromium } from 'k6/x/browser'; diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/03 BrowserType/name.md b/src/data/markdown/docs/30 xk6-browser/02 API/03 BrowserType/name.md index 75cdc22c1c..d29639ce3d 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/03 BrowserType/name.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/03 BrowserType/name.md @@ -15,14 +15,11 @@ Returns the name of the `BrowserType`; currently it will return `chromium`. ## Example - - ```javascript import { chromium } from 'k6/x/browser'; export default function () { const name = chromium.name(); console.log(name); - ... } ``` \ No newline at end of file diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/04-element-handle.md b/src/data/markdown/docs/30 xk6-browser/02 API/04-element-handle.md index 31cfde1d28..810b7a4bc0 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/04-element-handle.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/04-element-handle.md @@ -48,8 +48,6 @@ excerpt: "xk6-browser: ElementHandle Class" - - ```javascript import { check } from 'k6'; import { chromium } from 'k6/x/browser'; diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator.md index dfbd9624c8..69e00dba88 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator.md @@ -43,8 +43,6 @@ Locator can be created with the [page.locator(selector[, options])](/javascript- - - ```javascript import { chromium } from 'k6/x/browser'; diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/check--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/check--options--.md index adeb0da71b..c9269a3964 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/check--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/check--options--.md @@ -31,12 +31,17 @@ Use this method to select an `input` checkbox. - - ```javascript -await page.goto('https://test.k6.io/browser.php'); -const checkbox = page.locator("#checkbox1"); -checkbox.check(); +import { chromium } from 'k6/x/browser'; + +export default async function () { + const browser = chromium.launch(); + const page = browser.newPage(); + + await page.goto('https://test.k6.io/browser.php'); + const checkbox = page.locator("#checkbox1"); + checkbox.check(); +} ``` diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/click--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/click--options--.md index e859ddd8ba..48459478e0 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/click--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/click--options--.md @@ -34,12 +34,17 @@ Mouse click on the chosen element. - - ```javascript -await page.goto('https://test.k6.io/browser.php'); -const button = page.locator("#counter-button"); -button.click(); +import { chromium } from 'k6/x/browser'; + +export default async function () { + const browser = chromium.launch(); + const page = browser.newPage(); + + await page.goto('https://test.k6.io/browser.php'); + const button = page.locator("#counter-button"); + button.click(); +} ``` diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/dblclick--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/dblclick--options--.md index f8e238e44e..47205b6c0a 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/dblclick--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/dblclick--options--.md @@ -34,12 +34,17 @@ Mouse double click on the chosen element. - - ```javascript -await page.goto('https://test.k6.io/browser.php'); -const button = page.locator("#counter-button"); -button.dblclick(); +import { chromium } from 'k6/x/browser'; + +export default async function () { + const browser = chromium.launch(); + const page = browser.newPage(); + + await page.goto('https://test.k6.io/browser.php'); + const button = page.locator("#counter-button"); + button.dblclick(); +} ``` diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/dispatchevent--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/dispatchevent--options--.md index 83cefc5047..de2c7c55e7 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/dispatchevent--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/dispatchevent--options--.md @@ -32,12 +32,17 @@ Since eventInit is event-specific, please refer to the events documentation for - - ```javascript -await page.goto('https://test.k6.io/browser.php'); -const button = page.locator("#counter-button"); -button.dispatchEvent('click'); +import { chromium } from 'k6/x/browser'; + +export default async function () { + const browser = chromium.launch(); + const page = browser.newPage(); + + await page.goto('https://test.k6.io/browser.php'); + const button = page.locator("#counter-button"); + button.dispatchEvent('click'); +} ``` diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/fill--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/fill--options--.md index b4285d8989..d67b0a6f3f 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/fill--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/fill--options--.md @@ -21,12 +21,17 @@ Fill an `input`, `textarea` or `contenteditable` element with the provided value - - ```javascript -await page.goto('https://test.k6.io/browser.php'); -const textbox = page.locator("#text1"); -textbox.fill('hello world!'); +import { chromium } from 'k6/x/browser'; + +export default async function () { + const browser = chromium.launch(); + const page = browser.newPage(); + + await page.goto('https://test.k6.io/browser.php'); + const textbox = page.locator("#text1"); + textbox.fill('hello world!'); +} ``` diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/focus--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/focus--options--.md index 8d45f1037b..e591cbf3fd 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/focus--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/focus--options--.md @@ -18,12 +18,17 @@ Calls [focus](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/focus - - ```javascript -await page.goto('https://test.k6.io/browser.php'); -const textbox = page.locator("#text1"); -textbox.focus(); +import { chromium } from 'k6/x/browser'; + +export default async function () { + const browser = chromium.launch(); + const page = browser.newPage(); + + await page.goto('https://test.k6.io/browser.php'); + const textbox = page.locator("#text1"); + textbox.focus(); +} ``` diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/getattribute--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/getattribute--options--.md index c3a616faa2..49c53b66cc 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/getattribute--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/getattribute--options--.md @@ -25,13 +25,18 @@ Returns the element attribute value for the given attribute name. - - ```javascript -await page.goto('https://test.k6.io/browser.php'); -const textInput = page.locator('#text1'); -const attribute = textInput.getAttribute('onfocus'); -console.log(attribute); +import { chromium } from 'k6/x/browser'; + +export default async function () { + const browser = chromium.launch(); + const page = browser.newPage(); + + await page.goto('https://test.k6.io/browser.php'); + const textbox = page.locator("#text1"); + const attribute = textbox.getAttribute('onfocus'); + console.log(attribute); +} ``` diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/hover--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/hover--options--.md index 4dafb4e1df..1867d83475 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/hover--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/hover--options--.md @@ -32,12 +32,17 @@ Hovers over the element. - - ```javascript -await page.goto('https://test.k6.io/browser.php'); -const offScreenElement = page.locator("#off-screen"); -offScreenElement.hover(); +import { chromium } from 'k6/x/browser'; + +export default async function () { + const browser = chromium.launch(); + const page = browser.newPage(); + + await page.goto('https://test.k6.io/browser.php'); + const offScreenElement = page.locator("#off-screen"); + offScreenElement.hover(); +} ``` diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/innerhtml--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/innerhtml--options--.md index 9a8fc31850..c156799782 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/innerhtml--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/innerhtml--options--.md @@ -24,13 +24,18 @@ Returns the `element.innerHTML`. - - ```javascript -await page.goto('https://test.k6.io/browser.php'); -const offScreen = page.locator('#off-screen'); -const innerHTML = offScreen.innerHTML(); -console.log(innerHTML); +import { chromium } from 'k6/x/browser'; + +export default async function () { + const browser = chromium.launch(); + const page = browser.newPage(); + + await page.goto('https://test.k6.io/browser.php'); + const offScreen = page.locator('#off-screen'); + const innerHTML = offScreen.innerHTML(); + console.log(innerHTML); +} ``` diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/innertext--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/innertext--options--.md index f8977a2da8..5c239b7eff 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/innertext--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/innertext--options--.md @@ -24,13 +24,18 @@ Returns the `element.innerText`. - - ```javascript -await page.goto('https://test.k6.io/browser.php'); -const offScreen = page.locator('#off-screen'); -const innerText = offScreen.innerText(); -console.log(innerText); // Off page div +import { chromium } from 'k6/x/browser'; + +export default async function () { + const browser = chromium.launch(); + const page = browser.newPage(); + + await page.goto('https://test.k6.io/browser.php'); + const offScreen = page.locator('#off-screen'); + const innerText = offScreen.innerText(); + console.log(innerText); // Off page div +} ``` diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/inputvalue--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/inputvalue--options--.md index 225b647c8b..4818ccde36 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/inputvalue--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/inputvalue--options--.md @@ -24,14 +24,19 @@ Returns `input.value` for the selected `input`, `textarea` or `select` element. - - ```javascript -await page.goto('https://test.k6.io/browser.php'); -const textInput = page.locator('#text1'); -textInput.fill("Hello world!"); -const inputValue = textInput.inputValue(); -console.log(inputValue); +import { chromium } from 'k6/x/browser'; + +export default async function () { + const browser = chromium.launch(); + const page = browser.newPage(); + + await page.goto('https://test.k6.io/browser.php'); + const textInput = page.locator('#text1'); + textInput.fill("Hello world!"); + const inputValue = textInput.inputValue(); + console.log(inputValue); +} ``` diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/ischecked--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/ischecked--options--.md index 1b1d500dd0..85f9d6ae6e 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/ischecked--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/ischecked--options--.md @@ -24,13 +24,18 @@ Checks to see if the `checkbox` `input` type is selected or not. - - ```javascript -await page.goto('https://test.k6.io/browser.php'); -const checkbox = page.locator('#checkbox1'); -if (!checkbox.isChecked()) { - checkbox.check(); +import { chromium } from 'k6/x/browser'; + +export default async function () { + const browser = chromium.launch(); + const page = browser.newPage(); + + await page.goto('https://test.k6.io/browser.php'); + const checkbox = page.locator('#checkbox1'); + if (!checkbox.isChecked()) { + checkbox.check(); + } } ``` diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/isdisabled--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/isdisabled--options--.md index 8ed74b1317..2176e3aa8d 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/isdisabled--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/isdisabled--options--.md @@ -24,13 +24,18 @@ Checks if the element is `disabled`. - - ```javascript -await page.goto('https://test.k6.io/browser.php'); -const text = page.locator('#input-text-disabled'); -if (text.isDisabled()) { - console.log("element is disabled") +import { chromium } from 'k6/x/browser'; + +export default async function () { + const browser = chromium.launch(); + const page = browser.newPage(); + + await page.goto('https://test.k6.io/browser.php'); + const text = page.locator('#input-text-disabled'); + if (text.isDisabled()) { + console.log("element is disabled") + } } ``` diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/iseditable--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/iseditable--options--.md index aa948f7884..2b2a550506 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/iseditable--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/iseditable--options--.md @@ -24,13 +24,18 @@ Checks if the element is `editable`. - - ```javascript -await page.goto('https://test.k6.io/browser.php'); -const text = page.locator('#text1'); -if (text.isEditable()) { - text.fill("hello world!"); +import { chromium } from 'k6/x/browser'; + +export default async function () { + const browser = chromium.launch(); + const page = browser.newPage(); + + await page.goto('https://test.k6.io/browser.php'); + const text = page.locator('#text1'); + if (text.isEditable()) { + text.fill("hello world!"); + } } ``` diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/isenabled--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/isenabled--options--.md index f017deebb2..373bfc13fb 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/isenabled--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/isenabled--options--.md @@ -24,13 +24,18 @@ Checks if the element is `enabled`. - - ```javascript -await page.goto('https://test.k6.io/browser.php'); -const text = page.locator('#text1'); -if (text.isEnabled()) { - console.log("element is enabled"); +import { chromium } from 'k6/x/browser'; + +export default async function () { + const browser = chromium.launch(); + const page = browser.newPage(); + + await page.goto('https://test.k6.io/browser.php'); + const text = page.locator('#text1'); + if (text.isEnabled()) { + console.log("element is enabled"); + } } ``` diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/ishidden--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/ishidden--options--.md index de55eaee20..58f786d1eb 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/ishidden--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/ishidden--options--.md @@ -24,13 +24,18 @@ Checks if the element is `hidden`. - - ```javascript -await page.goto('https://test.k6.io/browser.php'); -const text = page.locator('#input-text-hidden'); -if (text.isHidden()) { - console.log("element is hidden"); +import { chromium } from 'k6/x/browser'; + +export default async function () { + const browser = chromium.launch(); + const page = browser.newPage(); + + await page.goto('https://test.k6.io/browser.php'); + const text = page.locator('#input-text-hidden'); + if (text.isHidden()) { + console.log("element is hidden"); + } } ``` diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/isvisible--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/isvisible--options--.md index b45c9fefe2..85d7008ce1 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/isvisible--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/isvisible--options--.md @@ -24,13 +24,18 @@ Checks if the element is `visible`. - - ```javascript -await page.goto('https://test.k6.io/browser.php'); -const text = page.locator('#text1'); -if (text.isVisible()) { - console.log("element is visible"); +import { chromium } from 'k6/x/browser'; + +export default async function () { + const browser = chromium.launch(); + const page = browser.newPage(); + + await page.goto('https://test.k6.io/browser.php'); + const text = page.locator('#text1'); + if (text.isVisible()) { + console.log("element is visible"); + } } ``` diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/press--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/press--options--.md index aa91344c88..cc3110afb1 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/press--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/press--options--.md @@ -21,14 +21,19 @@ Press a single key on the keyboard or a combination of keys. - - ```javascript -await page.goto('https://test.k6.io/browser.php'); -const text = page.locator('#text1'); -text.press('i'); -text.press('ArrowLeft'); -text.press('h'); +import { chromium } from 'k6/x/browser'; + +export default async function () { + const browser = chromium.launch(); + const page = browser.newPage(); + + await page.goto('https://test.k6.io/browser.php'); + const text = page.locator('#text1'); + text.press('i'); + text.press('ArrowLeft'); + text.press('h'); +} ``` diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/selectoption--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/selectoption--options--.md index add6c6668d..2c74af0be4 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/selectoption--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/selectoption--options--.md @@ -34,12 +34,17 @@ Select one or more options which match the values. - - ```javascript -await page.goto('https://test.k6.io/browser.php'); -const options = page.locator('#numbers-options'); -options.selectOption('three'); +import { chromium } from 'k6/x/browser'; + +export default async function () { + const browser = chromium.launch(); + const page = browser.newPage(); + + await page.goto('https://test.k6.io/browser.php'); + const options = page.locator('#numbers-options'); + options.selectOption('three'); +} ``` diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/tap--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/tap--options--.md index d5d76c90b4..90d32e874b 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/tap--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/tap--options--.md @@ -32,16 +32,20 @@ Tap on the chosen element. - - ```javascript -const page = context.newPage({ - hasTouch: true, -}); +import { chromium } from 'k6/x/browser'; -await page.goto('https://test.k6.io/browser.php'); -const options = page.locator("#numbers-options"); -options.tap(); +export default async function () { + const browser = chromium.launch(); + const context = browser.newContext(); + const page = context.newPage({ + hasTouch: true, + }); + + await page.goto('https://test.k6.io/browser.php'); + const options = page.locator("#numbers-options"); + options.tap(); +} ``` diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/textcontent--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/textcontent--options--.md index b65120a979..b251f44a7f 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/textcontent--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/textcontent--options--.md @@ -24,18 +24,23 @@ Returns the `element.textContent`. - - ```javascript -await page.goto('https://test.k6.io/browser.php'); -const options = page.locator("#checkbox1"); -console.log(options.textContent()); /* Zero - One - Two - Three - Four - Five - */ +import { chromium } from 'k6/x/browser'; + +export default async function () { + const browser = chromium.launch(); + const page = browser.newPage(); + + await page.goto('https://test.k6.io/browser.php'); + const options = page.locator("#checkbox1"); + console.log(options.textContent()); /* Zero + One + Two + Three + Four + Five + */ + } ``` diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/type--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/type--options--.md index 5319b6b852..744ba6349e 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/type--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/type--options--.md @@ -21,12 +21,17 @@ Type in the text into the input field. - - ```javascript -await page.goto('https://test.k6.io/browser.php'); -const text = page.locator("#text1"); -text.type('hello world!'); +import { chromium } from 'k6/x/browser'; + +export default async function () { + const browser = chromium.launch(); + const page = browser.newPage(); + + await page.goto('https://test.k6.io/browser.php'); + const text = page.locator("#text1"); + text.type('hello world!'); +} ``` diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/uncheck--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/uncheck--options--.md index b07501f681..3fb5b23e13 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/uncheck--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/uncheck--options--.md @@ -31,13 +31,18 @@ Unselect the `input` checkbox. - - ```javascript -await page.goto('https://test.k6.io/browser.php'); -const checkbox = page.locator("#checkbox1"); -checkbox.check(); -checkbox.uncheck(); +import { chromium } from 'k6/x/browser'; + +export default async function () { + const browser = chromium.launch(); + const page = browser.newPage(); + + await page.goto('https://test.k6.io/browser.php'); + const checkbox = page.locator("#checkbox1"); + checkbox.check(); + checkbox.uncheck(); +} ``` diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/waitfor--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/waitfor--options--.md index 0d93cda7cc..026ec3ef92 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/waitfor--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/waitfor--options--.md @@ -26,14 +26,19 @@ Wait for the element to be in a particular state e.g. `visible`. - - ```javascript -await page.goto('https://test.k6.io/browser.php'); -const text = page.locator('#input-text-hidden'); -text.waitFor({ - state: 'hidden', -}); +import { chromium } from 'k6/x/browser'; + +export default async function () { + const browser = chromium.launch(); + const page = browser.newPage(); + + await page.goto('https://test.k6.io/browser.php'); + const text = page.locator('#input-text-hidden'); + text.waitFor({ + state: 'hidden', + }); +} ``` diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/10-page.md b/src/data/markdown/docs/30 xk6-browser/02 API/10-page.md index c91bb5f7cc..146bcb0f00 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/10-page.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/10-page.md @@ -71,13 +71,11 @@ excerpt: "xk6-browser: Page Class" ### Example - - ```javascript import { check } from 'k6'; import { chromium } from 'k6/x/browser'; -export default function() { +export default async function() { const browser = chromium.launch({ headless: false, }); From 52aeb88619ecd3379c1c7b62202c9085c1c21021 Mon Sep 17 00:00:00 2001 From: mdcruz Date: Wed, 8 Feb 2023 11:55:31 +0000 Subject: [PATCH 03/15] update import path to experimental --- .../alternative main modules/30 k6-x-browser.md | 2 +- .../docs/30 xk6-browser/01 Get started/01 Welcome.md | 2 +- .../01 Get started/03 Running xk6-browser.md | 8 ++++---- src/data/markdown/docs/30 xk6-browser/02 API.md | 6 +++--- .../markdown/docs/30 xk6-browser/02 API/01 Browser.md | 4 ++-- .../docs/30 xk6-browser/02 API/01 Browser/close.md | 2 +- .../docs/30 xk6-browser/02 API/01 Browser/contexts.md | 2 +- .../docs/30 xk6-browser/02 API/01 Browser/isconnected.md | 2 +- .../02 API/01 Browser/newcontext--options--.md | 2 +- .../02 API/01 Browser/newpage--options--.md | 2 +- .../docs/30 xk6-browser/02 API/01 Browser/on--event--.md | 2 +- .../docs/30 xk6-browser/02 API/01 Browser/version.md | 2 +- .../30 xk6-browser/02 API/02 BrowserContext/browser.md | 2 +- .../02 API/02 BrowserContext/clearPermissions.md | 2 +- .../docs/30 xk6-browser/02 API/02 BrowserContext/close.md | 2 +- .../02 API/02 BrowserContext/grantPermissions.md | 2 +- .../30 xk6-browser/02 API/02 BrowserContext/newPage.md | 2 +- .../docs/30 xk6-browser/02 API/02 BrowserContext/pages.md | 2 +- .../02 BrowserContext/setDefaultNavigationTimeout.md | 2 +- .../02 API/02 BrowserContext/setDefaultTimeout.md | 2 +- .../02 API/02 BrowserContext/setGeolocation.md | 2 +- .../30 xk6-browser/02 API/02 BrowserContext/setOffline.md | 2 +- .../markdown/docs/30 xk6-browser/02 API/03 BrowserType.md | 4 ++-- .../02 API/03 BrowserType/executablePath.md | 2 +- .../02 API/03 BrowserType/launch--options--.md | 2 +- .../docs/30 xk6-browser/02 API/03 BrowserType/name.md | 2 +- .../docs/30 xk6-browser/02 API/04-element-handle.md | 4 ++-- .../markdown/docs/30 xk6-browser/02 API/08 Locator.md | 2 +- .../30 xk6-browser/02 API/08 Locator/check--options--.md | 2 +- .../30 xk6-browser/02 API/08 Locator/click--options--.md | 2 +- .../02 API/08 Locator/dblclick--options--.md | 2 +- .../02 API/08 Locator/dispatchevent--options--.md | 2 +- .../30 xk6-browser/02 API/08 Locator/fill--options--.md | 2 +- .../30 xk6-browser/02 API/08 Locator/focus--options--.md | 2 +- .../02 API/08 Locator/getattribute--options--.md | 2 +- .../30 xk6-browser/02 API/08 Locator/hover--options--.md | 2 +- .../02 API/08 Locator/innerhtml--options--.md | 2 +- .../02 API/08 Locator/innertext--options--.md | 2 +- .../02 API/08 Locator/inputvalue--options--.md | 2 +- .../02 API/08 Locator/ischecked--options--.md | 2 +- .../02 API/08 Locator/isdisabled--options--.md | 2 +- .../02 API/08 Locator/iseditable--options--.md | 2 +- .../02 API/08 Locator/isenabled--options--.md | 2 +- .../02 API/08 Locator/ishidden--options--.md | 2 +- .../02 API/08 Locator/isvisible--options--.md | 2 +- .../30 xk6-browser/02 API/08 Locator/press--options--.md | 2 +- .../02 API/08 Locator/selectoption--options--.md | 2 +- .../30 xk6-browser/02 API/08 Locator/tap--options--.md | 2 +- .../02 API/08 Locator/textcontent--options--.md | 2 +- .../30 xk6-browser/02 API/08 Locator/type--options--.md | 2 +- .../02 API/08 Locator/uncheck--options--.md | 2 +- .../02 API/08 Locator/waitfor--options--.md | 2 +- src/data/markdown/docs/30 xk6-browser/02 API/10-page.md | 2 +- .../en/06 Testing Guides/03 Load testing websites.md | 2 +- 54 files changed, 62 insertions(+), 62 deletions(-) diff --git a/src/data/markdown/docs/02 javascript api/alternative main modules/30 k6-x-browser.md b/src/data/markdown/docs/02 javascript api/alternative main modules/30 k6-x-browser.md index a9463ebc8f..909202e3e7 100644 --- a/src/data/markdown/docs/02 javascript api/alternative main modules/30 k6-x-browser.md +++ b/src/data/markdown/docs/02 javascript api/alternative main modules/30 k6-x-browser.md @@ -1,5 +1,5 @@ --- -title: "k6/x/browser" +title: "k6/experimental/browser" shouldCreatePage: false --- diff --git a/src/data/markdown/docs/30 xk6-browser/01 Get started/01 Welcome.md b/src/data/markdown/docs/30 xk6-browser/01 Get started/01 Welcome.md index 5f5b5e791b..7951088e70 100644 --- a/src/data/markdown/docs/30 xk6-browser/01 Get started/01 Welcome.md +++ b/src/data/markdown/docs/30 xk6-browser/01 Get started/01 Welcome.md @@ -42,7 +42,7 @@ The main use case for xk6-browser is to test performance on the browser level. B ```javascript -import { chromium } from 'k6/x/browser'; +import { chromium } from 'k6/experimental/browser'; import { check } from 'k6' export default async function () { diff --git a/src/data/markdown/docs/30 xk6-browser/01 Get started/03 Running xk6-browser.md b/src/data/markdown/docs/30 xk6-browser/01 Get started/03 Running xk6-browser.md index fa56f080e6..d110efd8d5 100644 --- a/src/data/markdown/docs/30 xk6-browser/01 Get started/03 Running xk6-browser.md +++ b/src/data/markdown/docs/30 xk6-browser/01 Get started/03 Running xk6-browser.md @@ -28,7 +28,7 @@ To run a simple local script: ```javascript -import { chromium } from 'k6/x/browser'; +import { chromium } from 'k6/experimental/browser'; export default async function () { const browser = chromium.launch({ headless: false }); @@ -87,7 +87,7 @@ You can also use `page.$()` instead of `page.locator()`. You can find the differ ```javascript -import { chromium } from 'k6/x/browser'; +import { chromium } from 'k6/experimental/browser'; export default async function () { const browser = chromium.launch({ headless: false }); @@ -125,7 +125,7 @@ To avoid timing errors or other race conditions in your script, if you have acti ```javascript -import { chromium } from 'k6/x/browser'; +import { chromium } from 'k6/experimental/browser'; import { check } from 'k6' export default async function () { @@ -178,7 +178,7 @@ To run a browser-level and protocol-level test concurrently, you can use [scenar ```javascript -import { chromium } from 'k6/x/browser'; +import { chromium } from 'k6/experimental/browser'; import { check } from 'k6'; import http from 'k6/http'; diff --git a/src/data/markdown/docs/30 xk6-browser/02 API.md b/src/data/markdown/docs/30 xk6-browser/02 API.md index 0fbb436553..ca21b25f04 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API.md @@ -9,7 +9,7 @@ Note that because k6 does not run in NodeJS, `xk6-browser` APIs will slightly di ## Modules -The table below lists the importable properties from the top level module (`'k6/x/browser'`). +The table below lists the importable properties from the top level module (`'k6/experimental/browser'`). | Property | Description | |----------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| @@ -19,12 +19,12 @@ The table below lists the importable properties from the top level module (`'k6/ ### Devices Example -To emulate the browser behaviour on a mobile device and approximately measure the browser performance, you can import `devices` from `k6/x/browser`. +To emulate the browser behaviour on a mobile device and approximately measure the browser performance, you can import `devices` from `k6/experimental/browser`. ```javascript -import { chromium, devices } from 'k6/x/browser'; +import { chromium, devices } from 'k6/experimental/browser'; export default async function () { const browser = chromium.launch({ headless: false }); diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser.md b/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser.md index 621d89c4c1..970551077f 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser.md @@ -7,7 +7,7 @@ The `Browser` class is the entry point for all your tests, and it is what intera - [BrowserContext](/javascript-api/xk6-browser/api/browsercontext/) which is where you can set a variety of attributes to control the behavior of pages; - and [Page](/javascript-api/xk6-browser/api/page/) which is where your rendered site is displayed. -A new Browser instance (hence a new browser process) can be created using the `launch()` method of the `chromium` module from `'k6/x/browser'`. +A new Browser instance (hence a new browser process) can be created using the `launch()` method of the `chromium` module from `'k6/experimental/browser'`. | Method | Description | |-------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------| @@ -24,7 +24,7 @@ A new Browser instance (hence a new browser process) can be created using the `l ```javascript -import { chromium } from 'k6/x/browser'; +import { chromium } from 'k6/experimental/browser'; export default async function () { const browser = chromium.launch(); diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/close.md b/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/close.md index 4e5a34985b..824e058545 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/close.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/close.md @@ -13,7 +13,7 @@ The [Browser](/javascript-api/xk6-browser/api/browser/) object cannot be used an ```javascript -import { chromium } from 'k6/x/browser'; +import { chromium } from 'k6/experimental/browser'; export default function () { const browser = chromium.launch(); diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/contexts.md b/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/contexts.md index 0bba03560b..f67ef7e5fa 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/contexts.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/contexts.md @@ -15,7 +15,7 @@ Access all open [BrowserContext](/javascript-api/xk6-browser/api/browsercontext/ ### Example ```javascript -import { chromium } from 'k6/x/browser'; +import { chromium } from 'k6/experimental/browser'; export default function () { const browser = chromium.launch(); diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/isconnected.md b/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/isconnected.md index e6dad2975a..60f5f0adaf 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/isconnected.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/isconnected.md @@ -24,7 +24,7 @@ Indicates whether the [CDP](https://chromedevtools.github.io/devtools-protocol/) ```javascript -import { chromium } from 'k6/x/browser'; +import { chromium } from 'k6/experimental/browser'; export default function () { const browser = chromium.launch(); diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/newcontext--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/newcontext--options--.md index dd59c6a1fb..8af7c3ad1e 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/newcontext--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/newcontext--options--.md @@ -52,7 +52,7 @@ Creates and returns a new [BrowserContext](/javascript-api/xk6-browser/api/brows ```javascript -import { chromium } from 'k6/x/browser'; +import { chromium } from 'k6/experimental/browser'; export default async function () { const browser = chromium.launch({ diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/newpage--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/newpage--options--.md index b65f9141ea..f2d39f2779 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/newpage--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/newpage--options--.md @@ -51,7 +51,7 @@ Creates a new [Page](/javascript-api/xk6-browser/api/page/) in a new [BrowserCon ```javascript -import { chromium } from 'k6/x/browser'; +import { chromium } from 'k6/experimental/browser'; export default async function () { const browser = chromium.launch({ diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/on--event--.md b/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/on--event--.md index 0b17a0aaf0..0371351f14 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/on--event--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/on--event--.md @@ -23,7 +23,7 @@ The returned promise will be resolved when the [Browser](/javascript-api/xk6-bro ### Example ```javascript -import { chromium } from 'k6/x/browser'; +import { chromium } from 'k6/experimental/browser'; import { check, sleep } from 'k6'; export default function() { diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/version.md b/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/version.md index 6b24e33afd..760c18b5b3 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/version.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/version.md @@ -17,7 +17,7 @@ Returns the browser application's version. ```javascript -import { chromium } from 'k6/x/browser'; +import { chromium } from 'k6/experimental/browser'; export default function () { const browser = chromium.launch(); diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/browser.md b/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/browser.md index ead6530b1c..38bc3d015c 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/browser.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/browser.md @@ -18,7 +18,7 @@ Returns the [browser](/javascript-api/xk6-browser/api/browser) instance that thi ```javascript -import { chromium } from 'k6/x/browser'; +import { chromium } from 'k6/experimental/browser'; export default function () { const browser = chromium.launch(); diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/clearPermissions.md b/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/clearPermissions.md index 12024fa048..2b65937b20 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/clearPermissions.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/clearPermissions.md @@ -18,7 +18,7 @@ Clears all permission overrides for the `BrowserContext`. ```javascript -import { chromium } from 'k6/x/browser'; +import { chromium } from 'k6/experimental/browser'; export default function () { const browser = chromium.launch(); diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/close.md b/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/close.md index 4163e8cd4e..c0bc032671 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/close.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/close.md @@ -11,7 +11,7 @@ Close the `BrowserContext` and all its [page](/javascript-api/xk6-browser/api/pa ```javascript -import { chromium } from 'k6/x/browser'; +import { chromium } from 'k6/experimental/browser'; export default function () { const browser = chromium.launch(); diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/grantPermissions.md b/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/grantPermissions.md index aa841fd19c..d9beeb20ee 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/grantPermissions.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/grantPermissions.md @@ -21,7 +21,7 @@ Grants specified permissions to the `BrowserContext`. Only grants corresponding ```javascript -import { chromium } from 'k6/x/browser'; +import { chromium } from 'k6/experimental/browser'; export default function () { const browser = chromium.launch(); diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/newPage.md b/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/newPage.md index 2fc179bb4e..f953c6672d 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/newPage.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/newPage.md @@ -18,7 +18,7 @@ Uses the `BrowserContext` to create a new [Page](/javascript-api/xk6-browser/api ```javascript -import { chromium } from 'k6/x/browser'; +import { chromium } from 'k6/experimental/browser'; export default async function () { const browser = chromium.launch(); diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/pages.md b/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/pages.md index 6bc20a50e1..3e4a759ea3 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/pages.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/pages.md @@ -25,7 +25,7 @@ Returns all open [Page](/javascript-api/xk6-browser/api/page/)s in the `BrowserC ```javascript -import { chromium } from 'k6/x/browser'; +import { chromium } from 'k6/experimental/browser'; export default function () { const browser = chromium.launch(); diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/setDefaultNavigationTimeout.md b/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/setDefaultNavigationTimeout.md index 46a26fe95c..7d7d0175ed 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/setDefaultNavigationTimeout.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/setDefaultNavigationTimeout.md @@ -22,7 +22,7 @@ Sets the default maximum navigation timeout for [Page.goto()](https://playwright ```javascript -import { chromium } from 'k6/x/browser'; +import { chromium } from 'k6/experimental/browser'; export default async function () { const browser = chromium.launch(); diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/setDefaultTimeout.md b/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/setDefaultTimeout.md index 517892c338..ff22a4c1b6 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/setDefaultTimeout.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/setDefaultTimeout.md @@ -22,7 +22,7 @@ Sets the default maximum timeout for all methods accepting a `timeout` option in ```javascript -import { chromium } from 'k6/x/browser'; +import { chromium } from 'k6/experimental/browser'; export default function () { const browser = chromium.launch(); diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/setGeolocation.md b/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/setGeolocation.md index b06e0ce385..56e16254bc 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/setGeolocation.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/setGeolocation.md @@ -28,7 +28,7 @@ Sets the context's geolocation. ```javascript -import { chromium } from 'k6/x/browser'; +import { chromium } from 'k6/experimental/browser'; export default function () { const browser = chromium.launch(); diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/setOffline.md b/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/setOffline.md index d81a482dcc..b8ce8d3b9c 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/setOffline.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/setOffline.md @@ -15,7 +15,7 @@ Toggles the `BrowserContext`'s connectivity on/off. ```javascript -import { chromium } from 'k6/x/browser'; +import { chromium } from 'k6/experimental/browser'; export default async function () { const browser = chromium.launch(); diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/03 BrowserType.md b/src/data/markdown/docs/30 xk6-browser/02 API/03 BrowserType.md index 495f24a157..d5e0437c59 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/03 BrowserType.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/03 BrowserType.md @@ -3,7 +3,7 @@ title: "BrowserType" excerpt: "xk6-browser: BrowserType Class" --- -The `BrowserType` is the entry point into launching a browser process; `chromium` is currently the only supported `BrowserType`. To use it, import `chromium` from the top level module `k6/x/browser`. +The `BrowserType` is the entry point into launching a browser process; `chromium` is currently the only supported `BrowserType`. To use it, import `chromium` from the top level module `k6/experimental/browser`. | Method | Description | |-----------------------------------------------------------------------------------------|------------------------------------------------------------------------------| @@ -19,7 +19,7 @@ The `BrowserType` is the entry point into launching a browser process; `chromium ```javascript -import { chromium } from 'k6/x/browser'; +import { chromium } from 'k6/experimental/browser'; export default async function () { const browser = chromium.launch(); diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/03 BrowserType/executablePath.md b/src/data/markdown/docs/30 xk6-browser/02 API/03 BrowserType/executablePath.md index c9acfd566d..4c8b5e1fc4 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/03 BrowserType/executablePath.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/03 BrowserType/executablePath.md @@ -16,7 +16,7 @@ Returns the path where the extension expects to find the browser executable. ## Example ```javascript -import { chromium } from 'k6/x/browser'; +import { chromium } from 'k6/experimental/browser'; export default function () { const execPath = chromium.executablePath(); diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/03 BrowserType/launch--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/03 BrowserType/launch--options--.md index e3e56798b0..da46dc0d05 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/03 BrowserType/launch--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/03 BrowserType/launch--options--.md @@ -31,7 +31,7 @@ Launches a new browser process. ```javascript -import { chromium } from 'k6/x/browser'; +import { chromium } from 'k6/experimental/browser'; export default async function () { const browser = chromium.launch({ diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/03 BrowserType/name.md b/src/data/markdown/docs/30 xk6-browser/02 API/03 BrowserType/name.md index d29639ce3d..a7d61a9fec 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/03 BrowserType/name.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/03 BrowserType/name.md @@ -16,7 +16,7 @@ Returns the name of the `BrowserType`; currently it will return `chromium`. ## Example ```javascript -import { chromium } from 'k6/x/browser'; +import { chromium } from 'k6/experimental/browser'; export default function () { const name = chromium.name(); diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/04-element-handle.md b/src/data/markdown/docs/30 xk6-browser/02 API/04-element-handle.md index 810b7a4bc0..bf9446b6b9 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/04-element-handle.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/04-element-handle.md @@ -50,7 +50,7 @@ excerpt: "xk6-browser: ElementHandle Class" ```javascript import { check } from 'k6'; -import { chromium } from 'k6/x/browser'; +import { chromium } from 'k6/experimental/browser'; export default async function() { const browser = chromium.launch({ @@ -90,7 +90,7 @@ export default async function() { ```javascript -import { chromium } from 'k6/x/browser'; +import { chromium } from 'k6/experimental/browser'; import { check } from 'k6'; export default function () { diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator.md index 69e00dba88..122cb8d375 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator.md @@ -44,7 +44,7 @@ Locator can be created with the [page.locator(selector[, options])](/javascript- ```javascript -import { chromium } from 'k6/x/browser'; +import { chromium } from 'k6/experimental/browser'; export default async function () { const browser = chromium.launch({ diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/check--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/check--options--.md index c9269a3964..4fdc7d636f 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/check--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/check--options--.md @@ -32,7 +32,7 @@ Use this method to select an `input` checkbox. ```javascript -import { chromium } from 'k6/x/browser'; +import { chromium } from 'k6/experimental/browser'; export default async function () { const browser = chromium.launch(); diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/click--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/click--options--.md index 48459478e0..b68b23835f 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/click--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/click--options--.md @@ -35,7 +35,7 @@ Mouse click on the chosen element. ```javascript -import { chromium } from 'k6/x/browser'; +import { chromium } from 'k6/experimental/browser'; export default async function () { const browser = chromium.launch(); diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/dblclick--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/dblclick--options--.md index 47205b6c0a..31cb1e719c 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/dblclick--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/dblclick--options--.md @@ -35,7 +35,7 @@ Mouse double click on the chosen element. ```javascript -import { chromium } from 'k6/x/browser'; +import { chromium } from 'k6/experimental/browser'; export default async function () { const browser = chromium.launch(); diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/dispatchevent--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/dispatchevent--options--.md index de2c7c55e7..1a7dc31b2b 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/dispatchevent--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/dispatchevent--options--.md @@ -33,7 +33,7 @@ Since eventInit is event-specific, please refer to the events documentation for ```javascript -import { chromium } from 'k6/x/browser'; +import { chromium } from 'k6/experimental/browser'; export default async function () { const browser = chromium.launch(); diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/fill--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/fill--options--.md index d67b0a6f3f..becb58ca77 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/fill--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/fill--options--.md @@ -22,7 +22,7 @@ Fill an `input`, `textarea` or `contenteditable` element with the provided value ```javascript -import { chromium } from 'k6/x/browser'; +import { chromium } from 'k6/experimental/browser'; export default async function () { const browser = chromium.launch(); diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/focus--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/focus--options--.md index e591cbf3fd..2a6bbfbdba 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/focus--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/focus--options--.md @@ -19,7 +19,7 @@ Calls [focus](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/focus ```javascript -import { chromium } from 'k6/x/browser'; +import { chromium } from 'k6/experimental/browser'; export default async function () { const browser = chromium.launch(); diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/getattribute--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/getattribute--options--.md index 49c53b66cc..878e2712af 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/getattribute--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/getattribute--options--.md @@ -26,7 +26,7 @@ Returns the element attribute value for the given attribute name. ```javascript -import { chromium } from 'k6/x/browser'; +import { chromium } from 'k6/experimental/browser'; export default async function () { const browser = chromium.launch(); diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/hover--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/hover--options--.md index 1867d83475..464473c5a9 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/hover--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/hover--options--.md @@ -33,7 +33,7 @@ Hovers over the element. ```javascript -import { chromium } from 'k6/x/browser'; +import { chromium } from 'k6/experimental/browser'; export default async function () { const browser = chromium.launch(); diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/innerhtml--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/innerhtml--options--.md index c156799782..6fe3cb083b 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/innerhtml--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/innerhtml--options--.md @@ -25,7 +25,7 @@ Returns the `element.innerHTML`. ```javascript -import { chromium } from 'k6/x/browser'; +import { chromium } from 'k6/experimental/browser'; export default async function () { const browser = chromium.launch(); diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/innertext--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/innertext--options--.md index 5c239b7eff..e19f4a8513 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/innertext--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/innertext--options--.md @@ -25,7 +25,7 @@ Returns the `element.innerText`. ```javascript -import { chromium } from 'k6/x/browser'; +import { chromium } from 'k6/experimental/browser'; export default async function () { const browser = chromium.launch(); diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/inputvalue--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/inputvalue--options--.md index 4818ccde36..cfde6e720a 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/inputvalue--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/inputvalue--options--.md @@ -25,7 +25,7 @@ Returns `input.value` for the selected `input`, `textarea` or `select` element. ```javascript -import { chromium } from 'k6/x/browser'; +import { chromium } from 'k6/experimental/browser'; export default async function () { const browser = chromium.launch(); diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/ischecked--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/ischecked--options--.md index 85f9d6ae6e..56166bcde6 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/ischecked--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/ischecked--options--.md @@ -25,7 +25,7 @@ Checks to see if the `checkbox` `input` type is selected or not. ```javascript -import { chromium } from 'k6/x/browser'; +import { chromium } from 'k6/experimental/browser'; export default async function () { const browser = chromium.launch(); diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/isdisabled--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/isdisabled--options--.md index 2176e3aa8d..618e46feba 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/isdisabled--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/isdisabled--options--.md @@ -25,7 +25,7 @@ Checks if the element is `disabled`. ```javascript -import { chromium } from 'k6/x/browser'; +import { chromium } from 'k6/experimental/browser'; export default async function () { const browser = chromium.launch(); diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/iseditable--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/iseditable--options--.md index 2b2a550506..bf40bb4a68 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/iseditable--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/iseditable--options--.md @@ -25,7 +25,7 @@ Checks if the element is `editable`. ```javascript -import { chromium } from 'k6/x/browser'; +import { chromium } from 'k6/experimental/browser'; export default async function () { const browser = chromium.launch(); diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/isenabled--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/isenabled--options--.md index 373bfc13fb..78abb7e88d 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/isenabled--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/isenabled--options--.md @@ -25,7 +25,7 @@ Checks if the element is `enabled`. ```javascript -import { chromium } from 'k6/x/browser'; +import { chromium } from 'k6/experimental/browser'; export default async function () { const browser = chromium.launch(); diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/ishidden--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/ishidden--options--.md index 58f786d1eb..3774411572 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/ishidden--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/ishidden--options--.md @@ -25,7 +25,7 @@ Checks if the element is `hidden`. ```javascript -import { chromium } from 'k6/x/browser'; +import { chromium } from 'k6/experimental/browser'; export default async function () { const browser = chromium.launch(); diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/isvisible--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/isvisible--options--.md index 85d7008ce1..4f27756b0b 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/isvisible--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/isvisible--options--.md @@ -25,7 +25,7 @@ Checks if the element is `visible`. ```javascript -import { chromium } from 'k6/x/browser'; +import { chromium } from 'k6/experimental/browser'; export default async function () { const browser = chromium.launch(); diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/press--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/press--options--.md index cc3110afb1..e439312d63 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/press--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/press--options--.md @@ -22,7 +22,7 @@ Press a single key on the keyboard or a combination of keys. ```javascript -import { chromium } from 'k6/x/browser'; +import { chromium } from 'k6/experimental/browser'; export default async function () { const browser = chromium.launch(); diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/selectoption--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/selectoption--options--.md index 2c74af0be4..d6ca5fdf12 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/selectoption--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/selectoption--options--.md @@ -35,7 +35,7 @@ Select one or more options which match the values. ```javascript -import { chromium } from 'k6/x/browser'; +import { chromium } from 'k6/experimental/browser'; export default async function () { const browser = chromium.launch(); diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/tap--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/tap--options--.md index 90d32e874b..cb99e66cc0 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/tap--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/tap--options--.md @@ -33,7 +33,7 @@ Tap on the chosen element. ```javascript -import { chromium } from 'k6/x/browser'; +import { chromium } from 'k6/experimental/browser'; export default async function () { const browser = chromium.launch(); diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/textcontent--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/textcontent--options--.md index b251f44a7f..5321129d56 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/textcontent--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/textcontent--options--.md @@ -25,7 +25,7 @@ Returns the `element.textContent`. ```javascript -import { chromium } from 'k6/x/browser'; +import { chromium } from 'k6/experimental/browser'; export default async function () { const browser = chromium.launch(); diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/type--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/type--options--.md index 744ba6349e..582c369687 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/type--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/type--options--.md @@ -22,7 +22,7 @@ Type in the text into the input field. ```javascript -import { chromium } from 'k6/x/browser'; +import { chromium } from 'k6/experimental/browser'; export default async function () { const browser = chromium.launch(); diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/uncheck--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/uncheck--options--.md index 3fb5b23e13..7fd8e4ffe2 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/uncheck--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/uncheck--options--.md @@ -32,7 +32,7 @@ Unselect the `input` checkbox. ```javascript -import { chromium } from 'k6/x/browser'; +import { chromium } from 'k6/experimental/browser'; export default async function () { const browser = chromium.launch(); diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/waitfor--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/waitfor--options--.md index 026ec3ef92..1a88c0f367 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/waitfor--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/waitfor--options--.md @@ -27,7 +27,7 @@ Wait for the element to be in a particular state e.g. `visible`. ```javascript -import { chromium } from 'k6/x/browser'; +import { chromium } from 'k6/experimental/browser'; export default async function () { const browser = chromium.launch(); diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/10-page.md b/src/data/markdown/docs/30 xk6-browser/02 API/10-page.md index 146bcb0f00..937fc14c14 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/10-page.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/10-page.md @@ -73,7 +73,7 @@ excerpt: "xk6-browser: Page Class" ```javascript import { check } from 'k6'; -import { chromium } from 'k6/x/browser'; +import { chromium } from 'k6/experimental/browser'; export default async function() { const browser = chromium.launch({ diff --git a/src/data/markdown/translated-guides/en/06 Testing Guides/03 Load testing websites.md b/src/data/markdown/translated-guides/en/06 Testing Guides/03 Load testing websites.md index 938da0919c..91aa312692 100644 --- a/src/data/markdown/translated-guides/en/06 Testing Guides/03 Load testing websites.md +++ b/src/data/markdown/translated-guides/en/06 Testing Guides/03 Load testing websites.md @@ -183,7 +183,7 @@ The following is an example of a browser-based load testing script in k6 using x ```javascript -import { chromium } from 'k6/x/browser'; +import { chromium } from 'k6/experimental/browser'; import { sleep } from 'k6'; export default async function () { From cc7b657442297d512eff2d185a13758025e05dfe Mon Sep 17 00:00:00 2001 From: mdcruz Date: Wed, 8 Feb 2023 16:29:20 +0000 Subject: [PATCH 04/15] add a link to k6 browser from the experimental module section --- src/data/markdown/docs/02 javascript api/07 k6-experimental.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/data/markdown/docs/02 javascript api/07 k6-experimental.md b/src/data/markdown/docs/02 javascript api/07 k6-experimental.md index 672ff8764e..7b90a9498c 100644 --- a/src/data/markdown/docs/02 javascript api/07 k6-experimental.md +++ b/src/data/markdown/docs/02 javascript api/07 k6-experimental.md @@ -9,4 +9,5 @@ excerpt: "k6 experimental APIs" | ------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------- | | [redis](/javascript-api/k6-experimental/redis/) | Functionality to interact with [Redis](https://redis.io/). | | [timers](/javascript-api/k6-experimental/timers/) | `setTimeout`, `clearTimeout`, `setInterval`, `clearInterval` | -| [websockets](/javascript-api/k6-experimental/websockets/) | Implements the browser's [WebSocket API](https://developer.mozilla.org/en-US/docs/Web/API/WebSocket). | \ No newline at end of file +| [websockets](/javascript-api/k6-experimental/websockets/) | Implements the browser's [WebSocket API](https://developer.mozilla.org/en-US/docs/Web/API/WebSocket). | +| [k6 browser](/javascript-api/xk6-browser/) | Provides browser-level APIs to interact with browsers and collect frontend performance metrics as part of your k6 tests. | \ No newline at end of file From 98aeb88da2dd9a42819da130b15a3afc00a576df Mon Sep 17 00:00:00 2001 From: mdcruz Date: Wed, 8 Feb 2023 17:15:51 +0000 Subject: [PATCH 05/15] rename k6 browser to browser --- .../markdown/docs/02 javascript api/07 k6-experimental.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/data/markdown/docs/02 javascript api/07 k6-experimental.md b/src/data/markdown/docs/02 javascript api/07 k6-experimental.md index 7b90a9498c..6f6e1fffe6 100644 --- a/src/data/markdown/docs/02 javascript api/07 k6-experimental.md +++ b/src/data/markdown/docs/02 javascript api/07 k6-experimental.md @@ -7,7 +7,7 @@ excerpt: "k6 experimental APIs" | Modules | Description | | ------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------- | +| [browser](/javascript-api/xk6-browser/) | Provides browser-level APIs to interact with browsers and collect frontend performance metrics as part of your k6 tests. | | [redis](/javascript-api/k6-experimental/redis/) | Functionality to interact with [Redis](https://redis.io/). | | [timers](/javascript-api/k6-experimental/timers/) | `setTimeout`, `clearTimeout`, `setInterval`, `clearInterval` | -| [websockets](/javascript-api/k6-experimental/websockets/) | Implements the browser's [WebSocket API](https://developer.mozilla.org/en-US/docs/Web/API/WebSocket). | -| [k6 browser](/javascript-api/xk6-browser/) | Provides browser-level APIs to interact with browsers and collect frontend performance metrics as part of your k6 tests. | \ No newline at end of file +| [websockets](/javascript-api/k6-experimental/websockets/) | Implements the browser's [WebSocket API](https://developer.mozilla.org/en-US/docs/Web/API/WebSocket). | \ No newline at end of file From 86131678f4c54e1d98737dcdf3865116032f5be3 Mon Sep 17 00:00:00 2001 From: mdcruz Date: Wed, 8 Feb 2023 19:45:21 +0000 Subject: [PATCH 06/15] rename xk6-browser to browser module --- gatsby-node.js | 2 +- .../doc-welcome/use-cases/use-cases.view.js | 2 +- src/data/doc-extensions/extensions.json | 12 ---- .../docs/30 xk6-browser/01 Get started.md | 4 +- .../01 Get started/01 Welcome.md | 22 +++--- .../01 Get started/02 Installation.md | 52 -------------- ...browser.md => 02 Running browser tests.md} | 68 ++++++++----------- .../{04 Metrics.md => 03 Metrics.md} | 19 +++--- ...g elements.md => 04 Selecting elements.md} | 6 +- .../markdown/docs/30 xk6-browser/02 API.md | 6 +- .../docs/30 xk6-browser/02 API/01 Browser.md | 2 +- .../30 xk6-browser/02 API/01 Browser/close.md | 2 +- .../02 API/01 Browser/contexts.md | 2 +- .../02 API/01 Browser/isconnected.md | 2 +- .../01 Browser/newcontext--options--.md | 2 +- .../02 API/01 Browser/newpage--options--.md | 2 +- .../02 API/01 Browser/on--event--.md | 2 +- .../02 API/01 Browser/version.md | 2 +- .../02 API/02 BrowserContext.md | 2 +- .../30 xk6-browser/02 API/03 BrowserType.md | 2 +- .../02 API/03 BrowserType/executablePath.md | 2 +- .../03 BrowserType/launch--options--.md | 2 +- .../02 API/03 BrowserType/name.md | 2 +- .../02 API/04-element-handle.md | 2 +- .../docs/30 xk6-browser/02 API/05-frame.md | 2 +- .../30 xk6-browser/02 API/06-js-handle.md | 2 +- .../docs/30 xk6-browser/02 API/07-keyboard.md | 2 +- .../docs/30 xk6-browser/02 API/08 Locator.md | 2 +- .../02 API/08 Locator/check--options--.md | 2 +- .../02 API/08 Locator/click--options--.md | 2 +- .../02 API/08 Locator/dblclick--options--.md | 2 +- .../08 Locator/dispatchevent--options--.md | 2 +- .../02 API/08 Locator/fill--options--.md | 2 +- .../02 API/08 Locator/focus--options--.md | 2 +- .../08 Locator/getattribute--options--.md | 2 +- .../02 API/08 Locator/hover--options--.md | 2 +- .../02 API/08 Locator/innerhtml--options--.md | 2 +- .../02 API/08 Locator/innertext--options--.md | 2 +- .../08 Locator/inputvalue--options--.md | 2 +- .../02 API/08 Locator/ischecked--options--.md | 2 +- .../08 Locator/isdisabled--options--.md | 2 +- .../08 Locator/iseditable--options--.md | 2 +- .../02 API/08 Locator/isenabled--options--.md | 2 +- .../02 API/08 Locator/ishidden--options--.md | 2 +- .../02 API/08 Locator/isvisible--options--.md | 2 +- .../02 API/08 Locator/press--options--.md | 2 +- .../08 Locator/selectoption--options--.md | 2 +- .../02 API/08 Locator/tap--options--.md | 2 +- .../08 Locator/textcontent--options--.md | 2 +- .../02 API/08 Locator/type--options--.md | 2 +- .../02 API/08 Locator/uncheck--options--.md | 2 +- .../02 API/08 Locator/waitfor--options--.md | 2 +- .../docs/30 xk6-browser/02 API/09-mouse.md | 2 +- .../docs/30 xk6-browser/02 API/10-page.md | 2 +- .../docs/30 xk6-browser/02 API/11-request.md | 2 +- .../docs/30 xk6-browser/02 API/12-response.md | 2 +- .../30 xk6-browser/02 API/13-touchscreen.md | 2 +- 57 files changed, 105 insertions(+), 182 deletions(-) delete mode 100644 src/data/markdown/docs/30 xk6-browser/01 Get started/02 Installation.md rename src/data/markdown/docs/30 xk6-browser/01 Get started/{03 Running xk6-browser.md => 02 Running browser tests.md} (69%) rename src/data/markdown/docs/30 xk6-browser/01 Get started/{04 Metrics.md => 03 Metrics.md} (90%) rename src/data/markdown/docs/30 xk6-browser/01 Get started/{05 Selecting elements.md => 04 Selecting elements.md} (89%) diff --git a/gatsby-node.js b/gatsby-node.js index 25fd2b9531..43b6c92f17 100644 --- a/gatsby-node.js +++ b/gatsby-node.js @@ -213,7 +213,7 @@ const topLevelLinks = [ submenu: [ { label: 'k6 API', to: `/javascript-api/` }, { - label: 'xk6-browser', + label: 'browser module', to: `/javascript-api/xk6-browser/`, }, { diff --git a/src/components/pages/doc-welcome/use-cases/use-cases.view.js b/src/components/pages/doc-welcome/use-cases/use-cases.view.js index 2c47ddfc00..7651e154a7 100644 --- a/src/components/pages/doc-welcome/use-cases/use-cases.view.js +++ b/src/components/pages/doc-welcome/use-cases/use-cases.view.js @@ -66,7 +66,7 @@ export const UseCases = () => {

{t('welcome.use-cases.browser-testing.pre-description')} - xk6-browser + our browser module {t('welcome.use-cases.browser-testing.description')}

diff --git a/src/data/doc-extensions/extensions.json b/src/data/doc-extensions/extensions.json index fdcc524d81..5d8d68513c 100644 --- a/src/data/doc-extensions/extensions.json +++ b/src/data/doc-extensions/extensions.json @@ -36,18 +36,6 @@ "official": false, "categories": ["Observability"] }, - { - "name": "xk6-browser", - "description": "Browser automation and end-to-end web testing", - "url": "https://github.com/grafana/xk6-browser", - "logo": "", - "author": { - "name": "", - "url": "" - }, - "official": false, - "categories": ["Browser"] - }, { "name": "xk6-websockets", "description": "A WHATWG WebSockets API specification implementation for k6 that might replace k6/ws in the future.", diff --git a/src/data/markdown/docs/30 xk6-browser/01 Get started.md b/src/data/markdown/docs/30 xk6-browser/01 Get started.md index b260b31e21..391eb898be 100644 --- a/src/data/markdown/docs/30 xk6-browser/01 Get started.md +++ b/src/data/markdown/docs/30 xk6-browser/01 Get started.md @@ -5,9 +5,7 @@ excerpt: '' [Welcome](/javascript-api/xk6-browser/) -[Installation](/javascript-api/xk6-browser/get-started/installation/) - -[Running xk6-browser](/javascript-api/xk6-browser/get-started/running-xk6-browser/) +[Running browser tests](/javascript-api/xk6-browser/get-started/running-xk6-browser/) [Browser metrics](/javascript-api/xk6-browser/get-started/browser-metrics/) diff --git a/src/data/markdown/docs/30 xk6-browser/01 Get started/01 Welcome.md b/src/data/markdown/docs/30 xk6-browser/01 Get started/01 Welcome.md index 7951088e70..d2b9a78733 100644 --- a/src/data/markdown/docs/30 xk6-browser/01 Get started/01 Welcome.md +++ b/src/data/markdown/docs/30 xk6-browser/01 Get started/01 Welcome.md @@ -1,16 +1,16 @@ --- title: 'Welcome' -heading: 'xk6-browser Documentation' -excerpt: 'xk6-browser brings browser automation and end-to-end testing to k6 while supporting core k6 features. Interact with real browsers and collect frontend metrics as part of your k6 tests.' +heading: 'Browser Module Documentation' +excerpt: 'The browser module brings browser automation and end-to-end testing to k6 while supporting core k6 features. Interact with real browsers and collect frontend metrics as part of your k6 tests.' --- -## What is xk6-browser? + -[xk6-browser](https://github.com/grafana/xk6-browser) brings browser automation and end-to-end web testing to k6 while supporting core k6 features. It adds browser-level APIs to interact with browsers and collect frontend performance metrics as part of your k6 tests. +The [Browser module](https://github.com/grafana/xk6-browser) brings browser automation and end-to-end web testing to k6 while supporting core k6 features. It adds browser-level APIs to interact with browsers and collect frontend performance metrics as part of your k6 tests. -xk6-browser aims to provide rough compatibility with the Playwright API, so you don’t need to learn a completely new API. +This module aims to provide rough compatibility with the Playwright API, so you don’t need to learn a completely new API. -## Why xk6-browser? +## Why browser testing? The [performance golden rule](https://www.stevesouders.com/blog/2012/02/10/the-performance-golden-rule/) states that 80%-90% of the website response time is spent on the frontend. But when the number of concurrent users is high, the percentage of time spent between the frontend and backend changes: @@ -18,7 +18,7 @@ The [performance golden rule](https://www.stevesouders.com/blog/2012/02/10/the-p While backend performance testing is useful and efficient, it doesn’t represent the overall user experience. -With xk6-browser, you can interact with the browser to script tests much closer to the actual website experience. You'll get insight into what your user sees on a browser-level and catch issues skipped from the protocol level. +With the browser module, you can interact with the browser to script tests much closer to the actual website experience. You'll get insight into what your user sees on a browser-level and catch issues skipped from the protocol level. At the same time, you can adopt a hybrid approach to performance testing by leveraging the existing functionalities of k6 and perform backend load testing on a protocol-level, all in the same script. This gives you a full picture of how the user experience is under different load scenarios. @@ -28,16 +28,16 @@ A hybrid approach lets you combine frontend and backend performance testing to g -## Use case for xk6-browser +## Use case for browser testing -The main use case for xk6-browser is to test performance on the browser level. Browser-level testing provides a way to measure user experience and find issues that are difficult to catch on the protocol level. Browser-level testing can help you answer questions like: +The main use case for the browser module is to test performance on the browser level. Browser-level testing provides a way to measure user experience and find issues that are difficult to catch on the protocol level. Browser-level testing can help you answer questions like: - When my application is receiving thousands of simultaneous requests from the protocol-level, what happens to the frontend? - How can I get metrics specific to browsers, like total page load time? - Are all my elements interactive on the frontend? - Are there any loading spinners that take a long time to disappear? -## A simple test using xk6-browser +## A simple browser test @@ -76,7 +76,7 @@ The preceding code launches a Chromium-based browser, visits the application and
-We're currently (January 2023) migrating most xk6-browser APIs to be async and return a Promise. To make this simpler, our goal is to use the async/await keywords. For more information, check out [Running xk6-browser](/javascript-api/xk6-browser/get-started/running-xk6-browser/). +We're currently (February 2023) migrating most browser module APIs to be async and return a Promise. To make this simpler, our goal is to use the async/await keywords. For more information, check out [Running browser tests](/javascript-api/xk6-browser/get-started/running-xk6-browser/).
diff --git a/src/data/markdown/docs/30 xk6-browser/01 Get started/02 Installation.md b/src/data/markdown/docs/30 xk6-browser/01 Get started/02 Installation.md deleted file mode 100644 index 7698329df1..0000000000 --- a/src/data/markdown/docs/30 xk6-browser/01 Get started/02 Installation.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -title: 'Installation' -excerpt: 'A step-by-step guide on how to install xk6-browser.' ---- - -xk6-browser is currently being developed as a [k6 extension](/extensions). You have to run a k6 version built with the browser extension to use the [browser-level APIs](/javascript-api/xk6-browser/api/#browser-level-apis) in your k6 tests. - -To find out more about how to use xk6 or what it is, check out this guide - [Build a k6 binary with extensions](/extensions/guides/build-a-k6-binary-with-extensions/). - -## Download a release binary - -The quickest way to get started is to [download a release binary from GitHub](https://github.com/grafana/xk6-browser/releases). - -This option is recommended if you don't want to build your own binary with [xk6](https://github.com/grafana/xk6), which can be challenging in some cases. - -## Build from source - -If you want to get the latest changes of the xk6-browser extension, you can also build a binary from source. - -To build a binary with the extension: -1. Ensure you have [Go](https://golang.org/doc/install) and [Git](https://git-scm.com/) installed. -2. Run the following commands in a terminal: - - - -```bash -# Install xk6 -go install go.k6.io/xk6/cmd/xk6@latest - -# Build the xk6-browser binary -xk6 build --output xk6-browser --with github.com/grafana/xk6-browser - -... [INFO] Build environment ready -... [INFO] Building k6 -... [INFO] Build complete: xk6-browser -``` - -```bash -# Install xk6 -go install go.k6.io/xk6/cmd/xk6@latest - -# Build the xk6-browser binary -xk6 build --output xk6-browser.exe --with github.com/grafana/xk6-browser - -... [INFO] Build environment ready -... [INFO] Building k6 -... [INFO] Build complete: xk6-browser -``` - - - -xk6 will create the `xk6-browser` binary in the current working directory. diff --git a/src/data/markdown/docs/30 xk6-browser/01 Get started/03 Running xk6-browser.md b/src/data/markdown/docs/30 xk6-browser/01 Get started/02 Running browser tests.md similarity index 69% rename from src/data/markdown/docs/30 xk6-browser/01 Get started/03 Running xk6-browser.md rename to src/data/markdown/docs/30 xk6-browser/01 Get started/02 Running browser tests.md index d110efd8d5..bc0df93aeb 100644 --- a/src/data/markdown/docs/30 xk6-browser/01 Get started/03 Running xk6-browser.md +++ b/src/data/markdown/docs/30 xk6-browser/01 Get started/02 Running browser tests.md @@ -1,6 +1,6 @@ --- -title: 'Running xk6-browser' -excerpt: 'Follow along to learn how to run xk6-browser test, interact with elements on the page, wait for page navigation, write assertions and run both browser-level and protocol-level tests in a single script.' +title: 'Running browser tests' +excerpt: 'Follow along to learn how to run a browser test, interact with elements on the page, wait for page navigation, write assertions and run both browser-level and protocol-level tests in a single script.' --- Follow along to learn how to: @@ -9,11 +9,11 @@ Follow along to learn how to: 2. Interact with elements on your webpage 3. Wait for page navigation 4. Run both browser-level and protocol-level tests in a single script -5. Run xk6-browser tests in a Docker container +5. Run browser tests in a Docker container
-With these example snippets, you'll run the test locally with your machine's resources. xk6-browser is not available within k6 cloud as of yet. +With these example snippets, you'll run the test locally with your machine's resources. The browser module is not available within k6 cloud as of yet.
@@ -21,62 +21,52 @@ With these example snippets, you'll run the test locally with your machine's res To run a simple local script: -1. Follow the [Installation Guidelines](/javascript-api/xk6-browser/get-started/installation/) and make sure there is a binary named `xk6-browser` in your current working directory. +1. Copy the following code, paste it into your favorite editor, and save it as `script.js`: -2. Copy the following code, paste it into your favorite editor, and save it as `script.js`: + - - -```javascript -import { chromium } from 'k6/experimental/browser'; + ```javascript + import { chromium } from 'k6/experimental/browser'; -export default async function () { - const browser = chromium.launch({ headless: false }); - const page = browser.newPage(); + export default async function () { + const browser = chromium.launch({ headless: false }); + const page = browser.newPage(); - try { - await page.goto('https://test.k6.io/', { waitUntil: 'networkidle' }) - page.screenshot({ path: 'screenshot.png' }); - } finally { - page.close(); - browser.close(); + try { + await page.goto('https://test.k6.io/', { waitUntil: 'networkidle' }) + page.screenshot({ path: 'screenshot.png' }); + } finally { + page.close(); + browser.close(); + } } -} -``` + ``` - + The preceding code imports the `chromium` [BrowserType](/javascript-api/xk6-browser/api/browsertype) (currently the only available `BrowserType` implementation), and uses its `launch` method to start up a Chromium [Browser](/javascript-api/xk6-browser/api/browser) process. After it starts, you can interact with it using the [browser-level APIs](/javascript-api/xk6-browser/api/#browser-level-apis). This example visits a test URL, waits until the network is idle and takes a screenshot of the page. Afterwards, it closes the page and the browser.
- To provide rough compatibility with the Playwright API, the xk6-browser API is also being converted from synchronous to asynchronous. `page.goto()` is now asynchronous so `await` keyword is used to deal with the asynchronous nature of the operation. + To provide rough compatibility with the Playwright API, the browser module API is also being converted from synchronous to asynchronous. `page.goto()` is now asynchronous so `await` keyword is used to deal with the asynchronous nature of the operation.
-3. Then, run xk6-browser on your terminal with this command: +2. Then, run the test on your terminal with this command: ```bash - $ ./xk6-browser run script.js + $ K6_BROWSER_ENABLED=1 k6 run script.js ``` -
- - The `./` prefix tells your shell to run the binary located in the current working directory. This is required on macOS and Linux, but not on the Windows `cmd.exe` shell. On PowerShell, specify `.\xk6-browser` instead. - - If you installed xk6-browser with a system package, or placed the binary in a directory that's part of your `$PATH` environment variable, you can omit the `./` or `.\` prefixes. - -
- ## Interact with elements on your webpage You can use `page.locator()` and pass in the element's selector you want to find on the page. `page.locator()` will create and return a [Locator](/javascript-api/xk6-browser/api/locator/) object, which you can later use to interact with the element. -To find out which selectors xk6-browser supports, check out [Selecting Elements](/javascript-api/xk6-browser/get-started/selecting-elements/). +To find out which selectors the browser module supports, check out [Selecting Elements](/javascript-api/xk6-browser/get-started/selecting-elements/).
@@ -116,7 +106,7 @@ Within the Locator API, various methods such as `type()` can be used to interact ## Asynchronous operations -Since many browser operations happen asynchronously, and in order to follow the Playwright API more closely, we are working on migrating most xk6-browser methods to be asynchronous as well. +Since many browser operations happen asynchronously, and in order to follow the Playwright API more closely, we are working on migrating most of the browser module methods to be asynchronous as well. At the moment, methods such as `page.goto()`, `page.waitForNavigation()` and `Element.click()` return [JavaScript promises](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Using_promises), and scripts must be written to handle this properly. @@ -161,7 +151,7 @@ Then, you can use [`check`](/javascript-api/k6/check/) from the k6 API to assert ## Run both browser-level and protocol-level tests in a single script -The real power of xk6-browser shines when it’s combined with the existing features of k6. A common scenario that you can try is to mix a smaller subset of browser-level tests with a larger protocol-level test which can simulate how your website responds to various performance events. This approach is what we refer to as [hybrid load testing](/testing-guides/load-testing-websites/#hybrid-load-testing) and provides advantages such as: +The real power of the browser module shines when it’s combined with the existing features of k6. A common scenario that you can try is to mix a smaller subset of browser-level tests with a larger protocol-level test which can simulate how your website responds to various performance events. This approach is what we refer to as [hybrid load testing](/testing-guides/load-testing-websites/#hybrid-load-testing) and provides advantages such as: - testing real user flows on the frontend while generating a higher load in the backend - measuring backend and frontend performance in the same test execution @@ -232,16 +222,16 @@ The preceding code contains two scenarios. One for the browser-level test called Since it's all in one script, this allows for greater collaboration amongst teams. -## Run xk6-browser tests in a Docker container +## Run browser tests in a Docker container -If you prefer working with Docker, you can run your xk6-browser test scripts in a Docker container using Docker Compose by creating a [Dockerfile](https://github.com/grafana/xk6-browser/blob/main/Dockerfile) and [docker-compose](https://github.com/grafana/xk6-browser/blob/main/docker-compose.yaml) file. +If you prefer working with Docker, you can run your browser test scripts in a Docker container using Docker Compose by creating a [Dockerfile](https://github.com/grafana/xk6-browser/blob/main/Dockerfile) and [docker-compose](https://github.com/grafana/xk6-browser/blob/main/docker-compose.yaml) file. To run the test, use the following command and replace `script.js` with your file. ```bash -docker-compose run -T xk6-browser run - \ No newline at end of file diff --git a/src/data/markdown/docs/30 xk6-browser/01 Get started/04 Metrics.md b/src/data/markdown/docs/30 xk6-browser/01 Get started/03 Metrics.md similarity index 90% rename from src/data/markdown/docs/30 xk6-browser/01 Get started/04 Metrics.md rename to src/data/markdown/docs/30 xk6-browser/01 Get started/03 Metrics.md index c0f121e268..decb060d7c 100644 --- a/src/data/markdown/docs/30 xk6-browser/01 Get started/04 Metrics.md +++ b/src/data/markdown/docs/30 xk6-browser/01 Get started/03 Metrics.md @@ -1,9 +1,15 @@ --- title: 'Browser metrics' -excerpt: 'An overview of the different browser performance metrics that xk6-browser tracks.' +excerpt: 'An overview of the different browser performance metrics that the browser module tracks.' --- -Apart from the usual HTTP specific metrics that k6 already tracks, xk6-browser tracks the following browser specific performance metrics on top: +
+ +These metrics are still subject to change in the future. + +
+ +Apart from the usual HTTP specific metrics that k6 already tracks, the browser module tracks the following browser specific performance metrics on top: | Metric Name | Description | |--------------------------------|--------------------------------------------------------------------------------------------------------------| @@ -11,11 +17,4 @@ Apart from the usual HTTP specific metrics that k6 already tracks, xk6-browser t | browser_first_paint | Emitted when the browser renders the first pixel on the page. | | browser_first_contentful_paint | Emitted when the browser renders the first DOM element on the page, whether that's a text, image or header. | | browser_first_meaningful_paint | Emitted when the browser renders the main content from above-the-fold that the users are looking for. | -| browser_loaded | Emitted when the page is fully loaded. | - -
- -These metrics are still subject to change in the future. - -
- +| browser_loaded | Emitted when the page is fully loaded. | \ No newline at end of file diff --git a/src/data/markdown/docs/30 xk6-browser/01 Get started/05 Selecting elements.md b/src/data/markdown/docs/30 xk6-browser/01 Get started/04 Selecting elements.md similarity index 89% rename from src/data/markdown/docs/30 xk6-browser/01 Get started/05 Selecting elements.md rename to src/data/markdown/docs/30 xk6-browser/01 Get started/04 Selecting elements.md index b4c19d33af..f7b46a3aaa 100644 --- a/src/data/markdown/docs/30 xk6-browser/01 Get started/05 Selecting elements.md +++ b/src/data/markdown/docs/30 xk6-browser/01 Get started/04 Selecting elements.md @@ -1,15 +1,15 @@ --- title: 'Selecting elements' -excerpt: 'A guide on how to select elements with xk6-browser.' +excerpt: 'A guide on how to select elements with the browser module.' --- Selectors are strings that represents a specific DOM element on the page. When writing browser-level tests, it's recommended to use selectors that are robust to avoid test flakiness when the DOM structure changes. -Currently, xk6-browser supports the standard **CSS and XPath selectors**. +Currently, the browser module supports the standard **CSS and XPath selectors**.
-Text-based selectors are currently not supported in xk6-browser. This will be supported in future releases. +Text-based selectors are currently not supported. This will be supported in future releases.
diff --git a/src/data/markdown/docs/30 xk6-browser/02 API.md b/src/data/markdown/docs/30 xk6-browser/02 API.md index ca21b25f04..5e480547cb 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API.md @@ -1,11 +1,11 @@ --- title: 'API' -excerpt: 'An overview of the browser-level APIs from xk6-browser.' +excerpt: 'An overview of the browser-level APIs from browser module.' --- -The `xk6-browser` APIs aim for rough compatibility with the [Playwright API for NodeJS](https://playwright.dev/docs/api/class-playwright). +The browser module APIs aim for rough compatibility with the [Playwright API for NodeJS](https://playwright.dev/docs/api/class-playwright). -Note that because k6 does not run in NodeJS, `xk6-browser` APIs will slightly differ from their Playwright counterparts. +Note that because k6 does not run in NodeJS, the browser module APIs will slightly differ from their Playwright counterparts. ## Modules diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser.md b/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser.md index 970551077f..c07c8f5a29 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser.md @@ -1,6 +1,6 @@ --- title: "Browser" -excerpt: "xk6-browser: Browser Class" +excerpt: "Browser module: Browser Class" --- The `Browser` class is the entry point for all your tests, and it is what interacts with the actual web browser via [Chrome DevTools Protocol](https://chromedevtools.github.io/devtools-protocol/) (CDP). It manages: diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/close.md b/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/close.md index 824e058545..f90b2dd3da 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/close.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/close.md @@ -1,6 +1,6 @@ --- title: 'close()' -excerpt: 'xk6-browser: Browser.close method' +excerpt: 'Browser module: Browser.close method' --- Closes the browser and all of its pages (if any were opened). diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/contexts.md b/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/contexts.md index f67ef7e5fa..6d6c0c6e1a 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/contexts.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/contexts.md @@ -1,6 +1,6 @@ --- title: 'contexts()' -excerpt: 'xk6-browser: Browser.contexts method' +excerpt: 'Browser module: Browser.contexts method' --- Access all open [BrowserContext](/javascript-api/xk6-browser/api/browsercontext/)s. diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/isconnected.md b/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/isconnected.md index 60f5f0adaf..79dcbaf36d 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/isconnected.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/isconnected.md @@ -1,6 +1,6 @@ --- title: 'isConnected()' -excerpt: 'xk6-browser: Browser.isConnected method' +excerpt: 'Browser module: Browser.isConnected method' ---
diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/newcontext--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/newcontext--options--.md index 8af7c3ad1e..ec4cf9c113 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/newcontext--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/newcontext--options--.md @@ -1,6 +1,6 @@ --- title: 'newContext([options])' -excerpt: 'xk6-browser: Browser.newContext method' +excerpt: 'Browser module: Browser.newContext method' --- Creates and returns a new [BrowserContext](/javascript-api/xk6-browser/api/browsercontext/). diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/newpage--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/newpage--options--.md index f2d39f2779..cdd9641234 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/newpage--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/newpage--options--.md @@ -1,6 +1,6 @@ --- title: 'newPage([options])' -excerpt: 'xk6-browser: Browser.newPage method' +excerpt: 'Browser module: Browser.newPage method' --- Creates a new [Page](/javascript-api/xk6-browser/api/page/) in a new [BrowserContext](/javascript-api/xk6-browser/api/browsercontext/) and returns the page. You do not need to create a new `BrowserContext` prior to using `newPage`. diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/on--event--.md b/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/on--event--.md index 0371351f14..492a5f2abb 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/on--event--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/on--event--.md @@ -1,6 +1,6 @@ --- title: 'on(event)' -excerpt: 'xk6-browser: Browser.on method' +excerpt: 'Browser module: Browser.on method' --- Detects events from the browser application. diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/version.md b/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/version.md index 760c18b5b3..463010d561 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/version.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/version.md @@ -1,6 +1,6 @@ --- title: 'version()' -excerpt: 'xk6-browser: Browser.version method' +excerpt: 'Browser module: Browser.version method' --- Returns the browser application's version. diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext.md b/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext.md index 19148cfa41..f646fa98c0 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext.md @@ -1,6 +1,6 @@ --- title: "BrowserContext" -excerpt: "xk6-browser: BrowserContext Class" +excerpt: "Browser module: BrowserContext Class" --- `BrowserContext`s provide a way to operate multiple independent sessions, with separate pages, cache, and cookies. A default `BrowserContext` is created when a [Browser](/javascript-api/xk6-browser/api/browser) is launched. diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/03 BrowserType.md b/src/data/markdown/docs/30 xk6-browser/02 API/03 BrowserType.md index d5e0437c59..44082c719f 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/03 BrowserType.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/03 BrowserType.md @@ -1,6 +1,6 @@ --- title: "BrowserType" -excerpt: "xk6-browser: BrowserType Class" +excerpt: "Browser module: BrowserType Class" --- The `BrowserType` is the entry point into launching a browser process; `chromium` is currently the only supported `BrowserType`. To use it, import `chromium` from the top level module `k6/experimental/browser`. diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/03 BrowserType/executablePath.md b/src/data/markdown/docs/30 xk6-browser/02 API/03 BrowserType/executablePath.md index 4c8b5e1fc4..e8c65bc68c 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/03 BrowserType/executablePath.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/03 BrowserType/executablePath.md @@ -1,6 +1,6 @@ --- title: 'executablePath()' -excerpt: 'xk6-browser: BrowserType.executablePath method' +excerpt: 'Browser module: BrowserType.executablePath method' --- Returns the path where the extension expects to find the browser executable. diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/03 BrowserType/launch--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/03 BrowserType/launch--options--.md index da46dc0d05..60c81abe7a 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/03 BrowserType/launch--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/03 BrowserType/launch--options--.md @@ -1,6 +1,6 @@ --- title: 'launch([options])' -excerpt: 'xk6-browser: BrowserType.launch method' +excerpt: 'Browser module: BrowserType.launch method' --- Launches a new browser process. diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/03 BrowserType/name.md b/src/data/markdown/docs/30 xk6-browser/02 API/03 BrowserType/name.md index a7d61a9fec..547f489671 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/03 BrowserType/name.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/03 BrowserType/name.md @@ -1,6 +1,6 @@ --- title: 'name()' -excerpt: 'xk6-browser: BrowserType.name method' +excerpt: 'Browser module: BrowserType.name method' --- Returns the name of the `BrowserType`; currently it will return `chromium`. diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/04-element-handle.md b/src/data/markdown/docs/30 xk6-browser/02 API/04-element-handle.md index bf9446b6b9..23f06a7f2b 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/04-element-handle.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/04-element-handle.md @@ -1,6 +1,6 @@ --- title: "ElementHandle" -excerpt: "xk6-browser: ElementHandle Class" +excerpt: "Browser module: ElementHandle Class" --- diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/05-frame.md b/src/data/markdown/docs/30 xk6-browser/02 API/05-frame.md index 1f5b64ada7..ec992c83bc 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/05-frame.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/05-frame.md @@ -1,6 +1,6 @@ --- title: "Frame" -excerpt: "xk6-browser: Frame Class" +excerpt: "Browser module: Frame Class" --- diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/06-js-handle.md b/src/data/markdown/docs/30 xk6-browser/02 API/06-js-handle.md index 8a87bd0c93..76cc2ac26c 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/06-js-handle.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/06-js-handle.md @@ -1,6 +1,6 @@ --- title: "JSHandle" -excerpt: "xk6-browser: JSHandle Class" +excerpt: "Browser module: JSHandle Class" --- diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/07-keyboard.md b/src/data/markdown/docs/30 xk6-browser/02 API/07-keyboard.md index b3c78cd78f..009f11fd9f 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/07-keyboard.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/07-keyboard.md @@ -1,6 +1,6 @@ --- title: "Keyboard" -excerpt: "xk6-browser: Keyboard Class" +excerpt: "Browser module: Keyboard Class" --- diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator.md index 122cb8d375..d6b7b4011e 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator.md @@ -1,6 +1,6 @@ --- title: "Locator" -excerpt: "xk6-browser: Locator Class" +excerpt: "Browser module: Locator Class" --- The Locator API makes it easier to work with dynamically changing elements. Some of the benefits of using it over existing ways to locate an element (e.g. `Page.$()`) include: diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/check--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/check--options--.md index 4fdc7d636f..1a32e05242 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/check--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/check--options--.md @@ -1,6 +1,6 @@ --- title: 'check([options])' -excerpt: 'xk6-browser: locator.check method' +excerpt: 'Browser module: locator.check method' ---
diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/click--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/click--options--.md index b68b23835f..a7dd0a84b3 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/click--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/click--options--.md @@ -1,6 +1,6 @@ --- title: 'click([options])' -excerpt: 'xk6-browser: locator.click method' +excerpt: 'Browser module: locator.click method' ---
diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/dblclick--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/dblclick--options--.md index 31cb1e719c..8f7cc57a0d 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/dblclick--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/dblclick--options--.md @@ -1,6 +1,6 @@ --- title: 'dblclick([options])' -excerpt: 'xk6-browser: locator.dblclick method' +excerpt: 'Browser module: locator.dblclick method' ---
diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/dispatchevent--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/dispatchevent--options--.md index 1a7dc31b2b..e567c462da 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/dispatchevent--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/dispatchevent--options--.md @@ -1,6 +1,6 @@ --- title: 'dispatchEvent(type, eventInit, [options])' -excerpt: 'xk6-browser: locator.dispatchEvent method' +excerpt: 'Browser module: locator.dispatchEvent method' --- Dispatches HTML DOM event types e.g. `'click'`. diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/fill--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/fill--options--.md index becb58ca77..fb9aef23a0 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/fill--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/fill--options--.md @@ -1,6 +1,6 @@ --- title: 'fill(value, [options])' -excerpt: 'xk6-browser: locator.fill method' +excerpt: 'Browser module: locator.fill method' --- Fill an `input`, `textarea` or `contenteditable` element with the provided value. diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/focus--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/focus--options--.md index 2a6bbfbdba..f37cd14e07 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/focus--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/focus--options--.md @@ -1,6 +1,6 @@ --- title: 'focus([options])' -excerpt: 'xk6-browser: locator.focus method' +excerpt: 'Browser module: locator.focus method' --- Calls [focus](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/focus) on the element, if it can be focused on. diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/getattribute--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/getattribute--options--.md index 878e2712af..31b9e76991 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/getattribute--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/getattribute--options--.md @@ -1,6 +1,6 @@ --- title: 'getAttribute(name, [options])' -excerpt: 'xk6-browser: locator.getAttribute method' +excerpt: 'Browser module: locator.getAttribute method' --- Returns the element attribute value for the given attribute name. diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/hover--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/hover--options--.md index 464473c5a9..04ed0e6be3 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/hover--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/hover--options--.md @@ -1,6 +1,6 @@ --- title: 'hover([options])' -excerpt: 'xk6-browser: locator.hover method' +excerpt: 'Browser module: locator.hover method' ---
diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/innerhtml--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/innerhtml--options--.md index 6fe3cb083b..a2421399b4 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/innerhtml--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/innerhtml--options--.md @@ -1,6 +1,6 @@ --- title: 'innerHTML([options])' -excerpt: 'xk6-browser: locator.innerHTML method' +excerpt: 'Browser module: locator.innerHTML method' --- Returns the `element.innerHTML`. diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/innertext--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/innertext--options--.md index e19f4a8513..847d26e7c1 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/innertext--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/innertext--options--.md @@ -1,6 +1,6 @@ --- title: 'innerText([options])' -excerpt: 'xk6-browser: locator.innerText method' +excerpt: 'Browser module: locator.innerText method' --- Returns the `element.innerText`. diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/inputvalue--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/inputvalue--options--.md index cfde6e720a..93f4e4a6fd 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/inputvalue--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/inputvalue--options--.md @@ -1,6 +1,6 @@ --- title: 'inputValue([options])' -excerpt: 'xk6-browser: locator.inputValue method' +excerpt: 'Browser module: locator.inputValue method' --- Returns `input.value` for the selected `input`, `textarea` or `select` element. diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/ischecked--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/ischecked--options--.md index 56166bcde6..ec2e603216 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/ischecked--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/ischecked--options--.md @@ -1,6 +1,6 @@ --- title: 'isChecked([options])' -excerpt: 'xk6-browser: locator.isChecked method' +excerpt: 'Browser module: locator.isChecked method' --- Checks to see if the `checkbox` `input` type is selected or not. diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/isdisabled--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/isdisabled--options--.md index 618e46feba..d4cbdfed6a 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/isdisabled--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/isdisabled--options--.md @@ -1,6 +1,6 @@ --- title: 'isDisabled([options])' -excerpt: 'xk6-browser: locator.isDisabled method' +excerpt: 'Browser module: locator.isDisabled method' --- Checks if the element is `disabled`. diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/iseditable--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/iseditable--options--.md index bf40bb4a68..06b8726770 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/iseditable--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/iseditable--options--.md @@ -1,6 +1,6 @@ --- title: 'isEditable([options])' -excerpt: 'xk6-browser: locator.isEditable method' +excerpt: 'Browser module: locator.isEditable method' --- Checks if the element is `editable`. diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/isenabled--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/isenabled--options--.md index 78abb7e88d..430671bdf7 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/isenabled--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/isenabled--options--.md @@ -1,6 +1,6 @@ --- title: 'isEnabled([options])' -excerpt: 'xk6-browser: locator.isEnabled method' +excerpt: 'Browser module: locator.isEnabled method' --- Checks if the element is `enabled`. diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/ishidden--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/ishidden--options--.md index 3774411572..59b022464e 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/ishidden--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/ishidden--options--.md @@ -1,6 +1,6 @@ --- title: 'isHidden([options])' -excerpt: 'xk6-browser: locator.isHidden method' +excerpt: 'Browser module: locator.isHidden method' --- Checks if the element is `hidden`. diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/isvisible--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/isvisible--options--.md index 4f27756b0b..5fd2847912 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/isvisible--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/isvisible--options--.md @@ -1,6 +1,6 @@ --- title: 'isVisible([options])' -excerpt: 'xk6-browser: locator.isVisible method' +excerpt: 'Browser module: locator.isVisible method' --- Checks if the element is `visible`. diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/press--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/press--options--.md index e439312d63..d5df580fdd 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/press--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/press--options--.md @@ -1,6 +1,6 @@ --- title: 'press(key, [options])' -excerpt: 'xk6-browser: locator.press method' +excerpt: 'Browser module: locator.press method' --- Press a single key on the keyboard or a combination of keys. diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/selectoption--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/selectoption--options--.md index d6ca5fdf12..b82a719532 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/selectoption--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/selectoption--options--.md @@ -1,6 +1,6 @@ --- title: 'selectOption(values, [options])' -excerpt: 'xk6-browser: locator.selectOption method' +excerpt: 'Browser module: locator.selectOption method' ---
diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/tap--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/tap--options--.md index cb99e66cc0..ef12b9cbe2 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/tap--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/tap--options--.md @@ -1,6 +1,6 @@ --- title: 'tap([options])' -excerpt: 'xk6-browser: locator.tap method' +excerpt: 'Browser module: locator.tap method' ---
diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/textcontent--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/textcontent--options--.md index 5321129d56..9634e30dec 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/textcontent--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/textcontent--options--.md @@ -1,6 +1,6 @@ --- title: 'textContent([options])' -excerpt: 'xk6-browser: locator.textContent method' +excerpt: 'Browser module: locator.textContent method' --- Returns the `element.textContent`. diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/type--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/type--options--.md index 582c369687..0566e4df16 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/type--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/type--options--.md @@ -1,6 +1,6 @@ --- title: 'type(text, [options])' -excerpt: 'xk6-browser: locator.type method' +excerpt: 'Browser module: locator.type method' --- Type in the text into the input field. diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/uncheck--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/uncheck--options--.md index 7fd8e4ffe2..3cdd9e55db 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/uncheck--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/uncheck--options--.md @@ -1,6 +1,6 @@ --- title: 'uncheck([options])' -excerpt: 'xk6-browser: locator.uncheck method' +excerpt: 'Browser module: locator.uncheck method' ---
diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/waitfor--options--.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/waitfor--options--.md index 1a88c0f367..45e945aaa2 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/waitfor--options--.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/waitfor--options--.md @@ -1,6 +1,6 @@ --- title: 'waitFor([options])' -excerpt: 'xk6-browser: locator.waitFor method' +excerpt: 'Browser module: locator.waitFor method' ---
diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/09-mouse.md b/src/data/markdown/docs/30 xk6-browser/02 API/09-mouse.md index 46c7783940..ec9eb46205 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/09-mouse.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/09-mouse.md @@ -1,6 +1,6 @@ --- title: "Mouse" -excerpt: "xk6-browser: Mouse Class" +excerpt: "Browser module: Mouse Class" --- diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/10-page.md b/src/data/markdown/docs/30 xk6-browser/02 API/10-page.md index 937fc14c14..b7facc71cd 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/10-page.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/10-page.md @@ -1,6 +1,6 @@ --- title: "Page" -excerpt: "xk6-browser: Page Class" +excerpt: "Browser module: Page Class" --- diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/11-request.md b/src/data/markdown/docs/30 xk6-browser/02 API/11-request.md index 451bb6cc00..f568f14820 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/11-request.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/11-request.md @@ -1,6 +1,6 @@ --- title: "Request" -excerpt: "xk6-browser: Request Class" +excerpt: "Browser module: Request Class" --- diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/12-response.md b/src/data/markdown/docs/30 xk6-browser/02 API/12-response.md index 2433de81c8..6d8696b93f 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/12-response.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/12-response.md @@ -1,6 +1,6 @@ --- title: "Response" -excerpt: "xk6-browser: Response Class" +excerpt: "Browser module: Response Class" --- diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/13-touchscreen.md b/src/data/markdown/docs/30 xk6-browser/02 API/13-touchscreen.md index 1ebe2b1e0b..adf5afee09 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/13-touchscreen.md +++ b/src/data/markdown/docs/30 xk6-browser/02 API/13-touchscreen.md @@ -1,6 +1,6 @@ --- title: "Touchscreen" -excerpt: "xk6-browser: Touchscreen Class" +excerpt: "Browser module: Touchscreen Class" --- From 790422951260845af2f8f3c3da2ef79cc3322823 Mon Sep 17 00:00:00 2001 From: mdcruz Date: Thu, 9 Feb 2023 09:16:51 +0000 Subject: [PATCH 07/15] change label to k6 browser --- gatsby-node.js | 2 +- src/data/markdown/docs/30 xk6-browser/01 Get started.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/gatsby-node.js b/gatsby-node.js index 43b6c92f17..f04266a711 100644 --- a/gatsby-node.js +++ b/gatsby-node.js @@ -213,7 +213,7 @@ const topLevelLinks = [ submenu: [ { label: 'k6 API', to: `/javascript-api/` }, { - label: 'browser module', + label: 'k6 browser', to: `/javascript-api/xk6-browser/`, }, { diff --git a/src/data/markdown/docs/30 xk6-browser/01 Get started.md b/src/data/markdown/docs/30 xk6-browser/01 Get started.md index 391eb898be..7c38ac0f65 100644 --- a/src/data/markdown/docs/30 xk6-browser/01 Get started.md +++ b/src/data/markdown/docs/30 xk6-browser/01 Get started.md @@ -5,7 +5,7 @@ excerpt: '' [Welcome](/javascript-api/xk6-browser/) -[Running browser tests](/javascript-api/xk6-browser/get-started/running-xk6-browser/) +[Running browser tests](/javascript-api/xk6-browser/get-started/running-browser-tests/) [Browser metrics](/javascript-api/xk6-browser/get-started/browser-metrics/) From 0ea017432a12da7791d638e3f674ce4dd4464cf9 Mon Sep 17 00:00:00 2001 From: mdcruz Date: Thu, 9 Feb 2023 11:52:05 +0000 Subject: [PATCH 08/15] change path from xk6-browser to k6-browser --- gatsby-node.js | 118 +++++++++--------- .../blocks/header/nav/header-nav.view.js | 8 +- .../k6-does-not/k6-does-not.component.js | 2 +- .../doc-welcome/use-cases/use-cases.view.js | 4 +- .../browser-class-list.view.js | 26 ++-- .../shared/browser-wip/browser-wip.js | 2 +- src/components/shared/seo/seo.view.js | 2 +- src/components/shared/tooltip/bnit/bnit.js | 2 +- src/components/shared/tooltip/bwipt/bwipt.js | 2 +- .../02 javascript api/07 k6-experimental.md | 2 +- .../30 k6-x-browser.md | 2 +- .../docs/30 k6-browser/01 Get started.md | 12 ++ .../01 Get started/01 Welcome.md | 4 +- .../02 Running browser tests.md | 0 .../01 Get started/03 Metrics.md | 0 .../01 Get started/04 Selecting elements.md | 0 .../images/Frontend-Backend-LoadTesting.png | Bin .../markdown/docs/30 k6-browser/02 API.md | 62 +++++++++ .../docs/30 k6-browser/02 API/01 Browser.md | 43 +++++++ .../02 API/01 Browser/close.md | 2 +- .../02 API/01 Browser/contexts.md | 4 +- .../02 API/01 Browser/isconnected.md | 2 +- .../01 Browser/newcontext--options--.md | 8 +- .../02 API/01 Browser/newpage--options--.md | 8 +- .../02 API/01 Browser/on--event--.md | 4 +- .../02 API/01 Browser/version.md | 0 .../30 k6-browser/02 API/02 BrowserContext.md | 26 ++++ .../02 API/02 BrowserContext/browser.md | 4 +- .../02 API/02 BrowserContext/clearCookies.md | 0 .../02 BrowserContext/clearPermissions.md | 0 .../02 API/02 BrowserContext/close.md | 2 +- .../02 BrowserContext/grantPermissions.md | 0 .../02 API/02 BrowserContext/newPage.md | 4 +- .../02 API/02 BrowserContext/pages.md | 2 +- .../setDefaultNavigationTimeout.md | 0 .../02 BrowserContext/setDefaultTimeout.md | 0 .../02 BrowserContext/setGeolocation.md | 0 .../02 API/02 BrowserContext/setOffline.md | 0 .../02 API/02 BrowserContext/waitForEvent.md | 2 +- .../02 API/03 BrowserType.md | 6 +- .../02 API/03 BrowserType/executablePath.md | 0 .../03 BrowserType/launch--options--.md | 2 +- .../02 API/03 BrowserType/name.md | 0 .../02 API/04-element-handle.md | 0 .../02 API/05-frame.md | 0 .../02 API/06-js-handle.md | 0 .../02 API/07-keyboard.md | 0 .../docs/30 k6-browser/02 API/08 Locator.md | 111 ++++++++++++++++ .../02 API/08 Locator/check--options--.md | 2 +- .../02 API/08 Locator/click--options--.md | 2 +- .../02 API/08 Locator/dblclick--options--.md | 2 +- .../08 Locator/dispatchevent--options--.md | 2 +- .../02 API/08 Locator/fill--options--.md | 2 +- .../02 API/08 Locator/focus--options--.md | 2 +- .../08 Locator/getattribute--options--.md | 2 +- .../02 API/08 Locator/hover--options--.md | 2 +- .../02 API/08 Locator/innerhtml--options--.md | 2 +- .../02 API/08 Locator/innertext--options--.md | 2 +- .../08 Locator/inputvalue--options--.md | 2 +- .../02 API/08 Locator/ischecked--options--.md | 2 +- .../08 Locator/isdisabled--options--.md | 2 +- .../08 Locator/iseditable--options--.md | 2 +- .../02 API/08 Locator/isenabled--options--.md | 2 +- .../02 API/08 Locator/ishidden--options--.md | 2 +- .../02 API/08 Locator/isvisible--options--.md | 2 +- .../02 API/08 Locator/press--options--.md | 2 +- .../08 Locator/selectoption--options--.md | 2 +- .../02 API/08 Locator/tap--options--.md | 2 +- .../08 Locator/textcontent--options--.md | 2 +- .../02 API/08 Locator/type--options--.md | 2 +- .../02 API/08 Locator/uncheck--options--.md | 2 +- .../02 API/08 Locator/waitfor--options--.md | 2 +- .../02 API/09-mouse.md | 0 .../02 API/10-page.md | 2 +- .../02 API/11-request.md | 0 .../02 API/12-response.md | 0 .../02 API/13-touchscreen.md | 0 .../docs/30 xk6-browser/01 Get started.md | 12 -- .../markdown/docs/30 xk6-browser/02 API.md | 62 --------- .../docs/30 xk6-browser/02 API/01 Browser.md | 43 ------- .../02 API/02 BrowserContext.md | 26 ---- .../docs/30 xk6-browser/02 API/08 Locator.md | 111 ---------------- .../03 Load testing websites.md | 10 +- src/i18n/guides-translations.js | 4 +- src/layouts/doc-layout/doc-layout.view.js | 2 +- src/utils/algolia.js | 2 +- src/utils/utils.node.js | 4 +- 87 files changed, 400 insertions(+), 404 deletions(-) create mode 100644 src/data/markdown/docs/30 k6-browser/01 Get started.md rename src/data/markdown/docs/{30 xk6-browser => 30 k6-browser}/01 Get started/01 Welcome.md (97%) rename src/data/markdown/docs/{30 xk6-browser => 30 k6-browser}/01 Get started/02 Running browser tests.md (100%) rename src/data/markdown/docs/{30 xk6-browser => 30 k6-browser}/01 Get started/03 Metrics.md (100%) rename src/data/markdown/docs/{30 xk6-browser => 30 k6-browser}/01 Get started/04 Selecting elements.md (100%) rename src/data/markdown/docs/{30 xk6-browser => 30 k6-browser}/01 Get started/images/Frontend-Backend-LoadTesting.png (100%) create mode 100644 src/data/markdown/docs/30 k6-browser/02 API.md create mode 100644 src/data/markdown/docs/30 k6-browser/02 API/01 Browser.md rename src/data/markdown/docs/{30 xk6-browser => 30 k6-browser}/02 API/01 Browser/close.md (78%) rename src/data/markdown/docs/{30 xk6-browser => 30 k6-browser}/02 API/01 Browser/contexts.md (77%) rename src/data/markdown/docs/{30 xk6-browser => 30 k6-browser}/02 API/01 Browser/isconnected.md (85%) rename src/data/markdown/docs/{30 xk6-browser => 30 k6-browser}/02 API/01 Browser/newcontext--options--.md (96%) rename src/data/markdown/docs/{30 xk6-browser => 30 k6-browser}/02 API/01 Browser/newpage--options--.md (95%) rename src/data/markdown/docs/{30 xk6-browser => 30 k6-browser}/02 API/01 Browser/on--event--.md (88%) rename src/data/markdown/docs/{30 xk6-browser => 30 k6-browser}/02 API/01 Browser/version.md (100%) create mode 100644 src/data/markdown/docs/30 k6-browser/02 API/02 BrowserContext.md rename src/data/markdown/docs/{30 xk6-browser => 30 k6-browser}/02 API/02 BrowserContext/browser.md (75%) rename src/data/markdown/docs/{30 xk6-browser => 30 k6-browser}/02 API/02 BrowserContext/clearCookies.md (100%) rename src/data/markdown/docs/{30 xk6-browser => 30 k6-browser}/02 API/02 BrowserContext/clearPermissions.md (100%) rename src/data/markdown/docs/{30 xk6-browser => 30 k6-browser}/02 API/02 BrowserContext/close.md (62%) rename src/data/markdown/docs/{30 xk6-browser => 30 k6-browser}/02 API/02 BrowserContext/grantPermissions.md (100%) rename src/data/markdown/docs/{30 xk6-browser => 30 k6-browser}/02 API/02 BrowserContext/newPage.md (86%) rename src/data/markdown/docs/{30 xk6-browser => 30 k6-browser}/02 API/02 BrowserContext/pages.md (88%) rename src/data/markdown/docs/{30 xk6-browser => 30 k6-browser}/02 API/02 BrowserContext/setDefaultNavigationTimeout.md (100%) rename src/data/markdown/docs/{30 xk6-browser => 30 k6-browser}/02 API/02 BrowserContext/setDefaultTimeout.md (100%) rename src/data/markdown/docs/{30 xk6-browser => 30 k6-browser}/02 API/02 BrowserContext/setGeolocation.md (100%) rename src/data/markdown/docs/{30 xk6-browser => 30 k6-browser}/02 API/02 BrowserContext/setOffline.md (100%) rename src/data/markdown/docs/{30 xk6-browser => 30 k6-browser}/02 API/02 BrowserContext/waitForEvent.md (96%) rename src/data/markdown/docs/{30 xk6-browser => 30 k6-browser}/02 API/03 BrowserType.md (73%) rename src/data/markdown/docs/{30 xk6-browser => 30 k6-browser}/02 API/03 BrowserType/executablePath.md (100%) rename src/data/markdown/docs/{30 xk6-browser => 30 k6-browser}/02 API/03 BrowserType/launch--options--.md (98%) rename src/data/markdown/docs/{30 xk6-browser => 30 k6-browser}/02 API/03 BrowserType/name.md (100%) rename src/data/markdown/docs/{30 xk6-browser => 30 k6-browser}/02 API/04-element-handle.md (100%) rename src/data/markdown/docs/{30 xk6-browser => 30 k6-browser}/02 API/05-frame.md (100%) rename src/data/markdown/docs/{30 xk6-browser => 30 k6-browser}/02 API/06-js-handle.md (100%) rename src/data/markdown/docs/{30 xk6-browser => 30 k6-browser}/02 API/07-keyboard.md (100%) create mode 100644 src/data/markdown/docs/30 k6-browser/02 API/08 Locator.md rename src/data/markdown/docs/{30 xk6-browser => 30 k6-browser}/02 API/08 Locator/check--options--.md (97%) rename src/data/markdown/docs/{30 xk6-browser => 30 k6-browser}/02 API/08 Locator/click--options--.md (97%) rename src/data/markdown/docs/{30 xk6-browser => 30 k6-browser}/02 API/08 Locator/dblclick--options--.md (97%) rename src/data/markdown/docs/{30 xk6-browser => 30 k6-browser}/02 API/08 Locator/dispatchevent--options--.md (97%) rename src/data/markdown/docs/{30 xk6-browser => 30 k6-browser}/02 API/08 Locator/fill--options--.md (96%) rename src/data/markdown/docs/{30 xk6-browser => 30 k6-browser}/02 API/08 Locator/focus--options--.md (94%) rename src/data/markdown/docs/{30 xk6-browser => 30 k6-browser}/02 API/08 Locator/getattribute--options--.md (95%) rename src/data/markdown/docs/{30 xk6-browser => 30 k6-browser}/02 API/08 Locator/hover--options--.md (97%) rename src/data/markdown/docs/{30 xk6-browser => 30 k6-browser}/02 API/08 Locator/innerhtml--options--.md (95%) rename src/data/markdown/docs/{30 xk6-browser => 30 k6-browser}/02 API/08 Locator/innertext--options--.md (95%) rename src/data/markdown/docs/{30 xk6-browser => 30 k6-browser}/02 API/08 Locator/inputvalue--options--.md (95%) rename src/data/markdown/docs/{30 xk6-browser => 30 k6-browser}/02 API/08 Locator/ischecked--options--.md (95%) rename src/data/markdown/docs/{30 xk6-browser => 30 k6-browser}/02 API/08 Locator/isdisabled--options--.md (95%) rename src/data/markdown/docs/{30 xk6-browser => 30 k6-browser}/02 API/08 Locator/iseditable--options--.md (95%) rename src/data/markdown/docs/{30 xk6-browser => 30 k6-browser}/02 API/08 Locator/isenabled--options--.md (95%) rename src/data/markdown/docs/{30 xk6-browser => 30 k6-browser}/02 API/08 Locator/ishidden--options--.md (95%) rename src/data/markdown/docs/{30 xk6-browser => 30 k6-browser}/02 API/08 Locator/isvisible--options--.md (95%) rename src/data/markdown/docs/{30 xk6-browser => 30 k6-browser}/02 API/08 Locator/press--options--.md (96%) rename src/data/markdown/docs/{30 xk6-browser => 30 k6-browser}/02 API/08 Locator/selectoption--options--.md (96%) rename src/data/markdown/docs/{30 xk6-browser => 30 k6-browser}/02 API/08 Locator/tap--options--.md (97%) rename src/data/markdown/docs/{30 xk6-browser => 30 k6-browser}/02 API/08 Locator/textcontent--options--.md (95%) rename src/data/markdown/docs/{30 xk6-browser => 30 k6-browser}/02 API/08 Locator/type--options--.md (96%) rename src/data/markdown/docs/{30 xk6-browser => 30 k6-browser}/02 API/08 Locator/uncheck--options--.md (97%) rename src/data/markdown/docs/{30 xk6-browser => 30 k6-browser}/02 API/08 Locator/waitfor--options--.md (95%) rename src/data/markdown/docs/{30 xk6-browser => 30 k6-browser}/02 API/09-mouse.md (100%) rename src/data/markdown/docs/{30 xk6-browser => 30 k6-browser}/02 API/10-page.md (96%) rename src/data/markdown/docs/{30 xk6-browser => 30 k6-browser}/02 API/11-request.md (100%) rename src/data/markdown/docs/{30 xk6-browser => 30 k6-browser}/02 API/12-response.md (100%) rename src/data/markdown/docs/{30 xk6-browser => 30 k6-browser}/02 API/13-touchscreen.md (100%) delete mode 100644 src/data/markdown/docs/30 xk6-browser/01 Get started.md delete mode 100644 src/data/markdown/docs/30 xk6-browser/02 API.md delete mode 100644 src/data/markdown/docs/30 xk6-browser/02 API/01 Browser.md delete mode 100644 src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext.md delete mode 100644 src/data/markdown/docs/30 xk6-browser/02 API/08 Locator.md diff --git a/gatsby-node.js b/gatsby-node.js index f04266a711..68aa31ddde 100644 --- a/gatsby-node.js +++ b/gatsby-node.js @@ -214,7 +214,7 @@ const topLevelLinks = [ { label: 'k6 API', to: `/javascript-api/` }, { label: 'k6 browser', - to: `/javascript-api/xk6-browser/`, + to: `/javascript-api/k6-browser/`, }, { label: 'xk6-disruptor', @@ -465,7 +465,7 @@ function getTopLevelPagesProps({ (item) => item !== 'jslib' && item !== 'xk6-disruptor' && - item !== 'xk6-browser' && + item !== 'k6-browser' && item !== 'extensions', ) .map((name) => { @@ -649,7 +649,7 @@ function getDocPagesProps({ } // data for github button on the right - // currently we only show it for jslib, xk6-browser, xk6-disruptor pages + // currently we only show it for jslib, k6-browser, xk6-disruptor pages let githubUrl = null; let githubTitle = ''; @@ -705,35 +705,32 @@ function getDocPagesProps({ })); } - // add prefix to xk6-browser pages slugs and sidebar links - if (slug.startsWith('xk6-browser/')) { + // add prefix to k6-browser pages slugs and sidebar links + if (slug.startsWith('k6-browser/')) { slug = `javascript-api/${slug}`; - if (slug.includes('xk6-browser/get-started/welcome')) { + if (slug.includes('k6-browser/get-started/welcome')) { // make the section root out of the welcome page - slug = `javascript-api/xk6-browser/`; + slug = `javascript-api/k6-browser/`; } replacePathsInSidebarTree( sidebarTree, - '/xk6-browser', - '/javascript-api/xk6-browser', + '/k6-browser', + '/javascript-api/k6-browser', ); replacePathsInSidebarTree( sidebarTree, - '/javascript-api/xk6-browser/get-started/welcome', - '/javascript-api/xk6-browser', + '/javascript-api/k6-browser/get-started/welcome', + '/javascript-api/k6-browser', ); githubUrl = 'https://github.com/grafana/xk6-browser'; - githubTitle = 'xk6-browser'; + githubTitle = 'k6 browser'; breadcrumbs = breadcrumbs.map((item) => ({ ...item, - name: item.name === 'Xk6-browser' ? 'xk6-browser' : item.name, - path: item.path.replace( - '/xk6-browser', - '/javascript-api/xk6-browser', - ), + name: item.name === 'K6-browser' ? 'k6-browser' : item.name, + path: item.path.replace('/k6-browser', '/javascript-api/k6-browser'), })); } @@ -741,7 +738,7 @@ function getDocPagesProps({ if ( slug === 'javascript-api/jslib/' || slug === 'javascript-api/xk6-disruptor/' || - slug === 'javascript-api/xk6-browser/' + slug === 'javascript-api/k6-browser/' ) { hideBreadcrumbs = true; } @@ -1182,7 +1179,7 @@ async function createDocPages({ // create data for rendering docs navigation const topLevelNames = Object.keys(sidebar.children).filter( (name) => - name !== 'xk6-browser' && name !== 'xk6-disruptor' && name !== 'jslib', + name !== 'k6-browser' && name !== 'xk6-disruptor' && name !== 'jslib', ); getDocPagesProps({ @@ -1234,8 +1231,8 @@ const createRedirects = ({ actions }) => { isPermanent: true, }); createRedirect({ - fromPath: '/javascript-api/xk6-browser/get-started/welcome/', - toPath: '/javascript-api/xk6-browser/', + fromPath: '/javascript-api/k6-browser/get-started/welcome/', + toPath: '/javascript-api/k6-browser/', redirectInBrowser: true, isPermanent: true, }); @@ -1725,59 +1722,58 @@ const createRedirects = ({ actions }) => { '/cloud/cloud-faq/general-questions/', '/misc/usage-reports': '/misc/usage-collection/', '/using-k6/using-node-modules': '/using-k6/modules/', - '/javascript-api/k6-x-browser/': '/javascript-api/xk6-browser/', + '/javascript-api/k6-x-browser/': '/javascript-api/k6-browser/', '/javascript-api/k6-x-browser/browser/': - '/javascript-api/xk6-browser/api/browser/', - '/javascript-api/xk6-browser/browser/': - '/javascript-api/xk6-browser/api/browser/', + '/javascript-api/k6-browser/api/browser/', + '/javascript-api/k6-browser/browser/': + '/javascript-api/k6-browser/api/browser/', '/javascript-api/k6-x-browser/browsercontext/': - '/javascript-api/xk6-browser/api/browsercontext/', - '/javascript-api/xk6-browser/browsercontext/': - '/javascript-api/xk6-browser/api/browsercontext/', + '/javascript-api/k6-browser/api/browsercontext/', + '/javascript-api/k6-browser/browsercontext/': + '/javascript-api/k6-browser/api/browsercontext/', '/javascript-api/k6-x-browser/browsertype/': - '/javascript-api/xk6-browser/api/browsertype/', - '/javascript-api/xk6-browser/browsertype/': - '/javascript-api/xk6-browser/api/browsertype/', + '/javascript-api/k6-browser/api/browsertype/', + '/javascript-api/k6-browser/browsertype/': + '/javascript-api/k6-browser/api/browsertype/', '/javascript-api/k6-x-browser/elementhandle/': - '/javascript-api/xk6-browser/api/elementhandle/', - '/javascript-api/xk6-browser/elementhandle/': - '/javascript-api/xk6-browser/api/elementhandle/', + '/javascript-api/k6-browser/api/elementhandle/', + '/javascript-api/k6-browser/elementhandle/': + '/javascript-api/k6-browser/api/elementhandle/', '/javascript-api/k6-x-browser/frame/': - '/javascript-api/xk6-browser/api/frame/', - '/javascript-api/xk6-browser/frame/': - '/javascript-api/xk6-browser/api/frame/', + '/javascript-api/k6-browser/api/frame/', + '/javascript-api/k6-browser/frame/': + '/javascript-api/k6-browser/api/frame/', '/javascript-api/k6-x-browser/jshandle/': - '/javascript-api/xk6-browser/api/jshandle/', - '/javascript-api/xk6-browser/jshandle/': - '/javascript-api/xk6-browser/api/jshandle/', + '/javascript-api/k6-browser/api/jshandle/', + '/javascript-api/k6-browser/jshandle/': + '/javascript-api/k6-browser/api/jshandle/', '/javascript-api/k6-x-browser/keyboard/': - '/javascript-api/xk6-browser/api/keyboard/', - '/javascript-api/xk6-browser/keyboard/': - '/javascript-api/xk6-browser/api/keyboard/', + '/javascript-api/k6-browser/api/keyboard/', + '/javascript-api/k6-browser/keyboard/': + '/javascript-api/k6-browser/api/keyboard/', '/javascript-api/k6-x-browser/locator/': - '/javascript-api/xk6-browser/api/locator/', - '/javascript-api/xk6-browser/locator/': - '/javascript-api/xk6-browser/api/locator/', + '/javascript-api/k6-browser/api/locator/', + '/javascript-api/k6-browser/locator/': + '/javascript-api/k6-browser/api/locator/', '/javascript-api/k6-x-browser/mouse/': - '/javascript-api/xk6-browser/api/mouse/', - '/javascript-api/xk6-browser/mouse/': - '/javascript-api/xk6-browser/api/mouse/', + '/javascript-api/k6-browser/api/mouse/', + '/javascript-api/k6-browser/mouse/': + '/javascript-api/k6-browser/api/mouse/', '/javascript-api/k6-x-browser/page/': - '/javascript-api/xk6-browser/api/page/', - '/javascript-api/xk6-browser/page/': - '/javascript-api/xk6-browser/api/page/', + '/javascript-api/k6-browser/api/page/', + '/javascript-api/k6-browser/page/': '/javascript-api/k6-browser/api/page/', '/javascript-api/k6-x-browser/request/': - '/javascript-api/xk6-browser/api/request/', - '/javascript-api/xk6-browser/request/': - '/javascript-api/xk6-browser/api/request/', + '/javascript-api/k6-browser/api/request/', + '/javascript-api/k6-browser/request/': + '/javascript-api/k6-browser/api/request/', '/javascript-api/k6-x-browser/response/': - '/javascript-api/xk6-browser/api/response/', - '/javascript-api/xk6-browser/response/': - '/javascript-api/xk6-browser/api/response/', + '/javascript-api/k6-browser/api/response/', + '/javascript-api/k6-browser/response/': + '/javascript-api/k6-browser/api/response/', '/javascript-api/k6-x-browser/touchscreen/': - '/javascript-api/xk6-browser/api/touchscreen/', - '/javascript-api/xk6-browser/touchscreen/': - '/javascript-api/xk6-browser/api/touchscreen/', + '/javascript-api/k6-browser/api/touchscreen/', + '/javascript-api/k6-browser/touchscreen/': + '/javascript-api/k6-browser/api/touchscreen/', ...newJavascriptURLsRedirects, }; diff --git a/src/components/blocks/header/nav/header-nav.view.js b/src/components/blocks/header/nav/header-nav.view.js index a6cfd94514..7d721141d7 100644 --- a/src/components/blocks/header/nav/header-nav.view.js +++ b/src/components/blocks/header/nav/header-nav.view.js @@ -16,18 +16,18 @@ export const isJsAPIActiveLink = (path) => { // getting the same piece from window and removing possible trailing slash const actualPath = window.location.pathname.replace(/\/$/, ''); - // avoid highlighting k6 api link if xk6-browser or jslib was selected + // avoid highlighting k6 api link if k6 browser or jslib was selected if (actualPath.includes('javascript-api/jslib')) { isActiveLink = givenPath.includes('javascript-api/jslib') && actualPath.includes(givenPath); - } else if (actualPath.includes('javascript-api/xk6-browser')) { + } else if (actualPath.includes('javascript-api/k6-browser')) { isActiveLink = - givenPath.includes('javascript-api/xk6-browser') && + givenPath.includes('javascript-api/k6-browser') && actualPath.includes(givenPath); } else { isActiveLink = - !givenPath.includes('javascript-api/xk6-browser') && + !givenPath.includes('javascript-api/k6-browser') && !givenPath.includes('javascript-api/jslib') && actualPath.includes(givenPath); } diff --git a/src/components/pages/doc-welcome/k6-does-not/k6-does-not.component.js b/src/components/pages/doc-welcome/k6-does-not/k6-does-not.component.js index 002c8e912d..b02a25fbcd 100644 --- a/src/components/pages/doc-welcome/k6-does-not/k6-does-not.component.js +++ b/src/components/pages/doc-welcome/k6-does-not/k6-does-not.component.js @@ -24,7 +24,7 @@ export const K6DoesNot = () => {

{t('welcome.k6-does-not.browser.description')}

{t('welcome.k6-does-not.browser.testing.text')}{' '} - + {t('welcome.k6-does-not.browser.testing.link')} , {t('welcome.k6-does-not.browser.testing.text2')}. diff --git a/src/components/pages/doc-welcome/use-cases/use-cases.view.js b/src/components/pages/doc-welcome/use-cases/use-cases.view.js index 7651e154a7..6f9c1b39bf 100644 --- a/src/components/pages/doc-welcome/use-cases/use-cases.view.js +++ b/src/components/pages/doc-welcome/use-cases/use-cases.view.js @@ -65,8 +65,8 @@ export const UseCases = () => {

{t('welcome.use-cases.browser-testing.pre-description')} - - our browser module + + k6 browser {t('welcome.use-cases.browser-testing.description')}

diff --git a/src/components/shared/browser-class-list/browser-class-list.view.js b/src/components/shared/browser-class-list/browser-class-list.view.js index dc85e4c96b..f44cdc6f85 100644 --- a/src/components/shared/browser-class-list/browser-class-list.view.js +++ b/src/components/shared/browser-class-list/browser-class-list.view.js @@ -6,55 +6,55 @@ import React from 'react'; const links = [ { title: 'Browser', - url: '/javascript-api/xk6-browser/browser/', + url: '/javascript-api/k6-browser/browser/', }, { title: 'BrowserContext', - url: '/javascript-api/xk6-browser/browsercontext/', + url: '/javascript-api/k6-browser/browsercontext/', }, { title: 'BrowserType', - url: '/javascript-api/xk6-browser/browsertype/', + url: '/javascript-api/k6-browser/browsertype/', }, { title: 'ElementHandle', - url: '/javascript-api/xk6-browser/elementhandle/', + url: '/javascript-api/k6-browser/elementhandle/', }, { title: 'Frame', - url: '/javascript-api/xk6-browser/frame/', + url: '/javascript-api/k6-browser/frame/', }, { title: 'JSHandle', - url: '/javascript-api/xk6-browser/jshandle', + url: '/javascript-api/k6-browser/jshandle', }, { title: 'Keyboard', - url: '/javascript-api/xk6-browser/keyboard', + url: '/javascript-api/k6-browser/keyboard', }, { title: 'Locator', - url: '/javascript-api/xk6-browser/locator', + url: '/javascript-api/k6-browser/locator', }, { title: 'Mouse', - url: '/javascript-api/xk6-browser/mouse/', + url: '/javascript-api/k6-browser/mouse/', }, { title: 'Page', - url: '/javascript-api/xk6-browser/page/', + url: '/javascript-api/k6-browser/page/', }, { title: 'Request', - url: '/javascript-api/xk6-browser/request/', + url: '/javascript-api/k6-browser/request/', }, { title: 'Response', - url: '/javascript-api/xk6-browser/response/', + url: '/javascript-api/k6-browser/response/', }, { title: 'Touchscreen', - url: '/javascript-api/xk6-browser/touchscreen/', + url: '/javascript-api/k6-browser/touchscreen/', }, ]; diff --git a/src/components/shared/browser-wip/browser-wip.js b/src/components/shared/browser-wip/browser-wip.js index ca79f97f49..c733b40fc3 100644 --- a/src/components/shared/browser-wip/browser-wip.js +++ b/src/components/shared/browser-wip/browser-wip.js @@ -4,7 +4,7 @@ import WIPIcon from 'svg/work-in-progress.inline.svg'; const BrowserWIP = () => (

- xk6-browser is in beta - we are working + k6 browser is in beta - we are working to cover more Playwright APIs.

); diff --git a/src/components/shared/seo/seo.view.js b/src/components/shared/seo/seo.view.js index 94fc926b3b..04cc7a7c0c 100644 --- a/src/components/shared/seo/seo.view.js +++ b/src/components/shared/seo/seo.view.js @@ -7,7 +7,7 @@ import { LATEST_VERSION } from 'utils/versioning'; const getPageHref = (host, slug) => { if ( - slug.match(/^\/?xk6-browser\/.*/g) || + slug.match(/^\/?k6-browser\/.*/g) || slug.match(/^\/?xk6-disruptor\/.*/g) || slug.match(/^\/?jslib\/.*/g) ) { diff --git a/src/components/shared/tooltip/bnit/bnit.js b/src/components/shared/tooltip/bnit/bnit.js index bb40fd8792..257fd8af03 100644 --- a/src/components/shared/tooltip/bnit/bnit.js +++ b/src/components/shared/tooltip/bnit/bnit.js @@ -4,7 +4,7 @@ import NITIcon from 'svg/not-implemented.inline.svg'; import Tooltip from '../tooltip'; -// BNIT = xk6-browser "Not Implemented" tooltip +// BNIT = k6 browser "Not Implemented" tooltip const BNIT = ({ id }) => id ? ( diff --git a/src/components/shared/tooltip/bwipt/bwipt.js b/src/components/shared/tooltip/bwipt/bwipt.js index be4bce3567..a6349378fc 100644 --- a/src/components/shared/tooltip/bwipt/bwipt.js +++ b/src/components/shared/tooltip/bwipt/bwipt.js @@ -4,7 +4,7 @@ import WIPIcon from 'svg/work-in-progress.inline.svg'; import Tooltip from '../tooltip'; -// BWIPT = xk6-browser "Work in Progress" tooltip +// BWIPT = k6 browser "Work in Progress" tooltip const BWIPT = ({ id }) => id ? ( diff --git a/src/data/markdown/docs/02 javascript api/07 k6-experimental.md b/src/data/markdown/docs/02 javascript api/07 k6-experimental.md index 6f6e1fffe6..58b626816d 100644 --- a/src/data/markdown/docs/02 javascript api/07 k6-experimental.md +++ b/src/data/markdown/docs/02 javascript api/07 k6-experimental.md @@ -7,7 +7,7 @@ excerpt: "k6 experimental APIs" | Modules | Description | | ------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------- | -| [browser](/javascript-api/xk6-browser/) | Provides browser-level APIs to interact with browsers and collect frontend performance metrics as part of your k6 tests. | +| [browser](/javascript-api/k6-browser/) | Provides browser-level APIs to interact with browsers and collect frontend performance metrics as part of your k6 tests. | | [redis](/javascript-api/k6-experimental/redis/) | Functionality to interact with [Redis](https://redis.io/). | | [timers](/javascript-api/k6-experimental/timers/) | `setTimeout`, `clearTimeout`, `setInterval`, `clearInterval` | | [websockets](/javascript-api/k6-experimental/websockets/) | Implements the browser's [WebSocket API](https://developer.mozilla.org/en-US/docs/Web/API/WebSocket). | \ No newline at end of file diff --git a/src/data/markdown/docs/02 javascript api/alternative main modules/30 k6-x-browser.md b/src/data/markdown/docs/02 javascript api/alternative main modules/30 k6-x-browser.md index 909202e3e7..a9463ebc8f 100644 --- a/src/data/markdown/docs/02 javascript api/alternative main modules/30 k6-x-browser.md +++ b/src/data/markdown/docs/02 javascript api/alternative main modules/30 k6-x-browser.md @@ -1,5 +1,5 @@ --- -title: "k6/experimental/browser" +title: "k6/x/browser" shouldCreatePage: false --- diff --git a/src/data/markdown/docs/30 k6-browser/01 Get started.md b/src/data/markdown/docs/30 k6-browser/01 Get started.md new file mode 100644 index 0000000000..c1709f2b80 --- /dev/null +++ b/src/data/markdown/docs/30 k6-browser/01 Get started.md @@ -0,0 +1,12 @@ +--- +title: 'Get started' +excerpt: '' +--- + +[Welcome](/javascript-api/k6-browser/) + +[Running browser tests](/javascript-api/k6-browser/get-started/running-browser-tests/) + +[Browser metrics](/javascript-api/k6-browser/get-started/browser-metrics/) + +[Selecting elements](/javascript-api/k6-browser/get-started/selecting-elements/) diff --git a/src/data/markdown/docs/30 xk6-browser/01 Get started/01 Welcome.md b/src/data/markdown/docs/30 k6-browser/01 Get started/01 Welcome.md similarity index 97% rename from src/data/markdown/docs/30 xk6-browser/01 Get started/01 Welcome.md rename to src/data/markdown/docs/30 k6-browser/01 Get started/01 Welcome.md index d2b9a78733..7cd457ff15 100644 --- a/src/data/markdown/docs/30 xk6-browser/01 Get started/01 Welcome.md +++ b/src/data/markdown/docs/30 k6-browser/01 Get started/01 Welcome.md @@ -76,11 +76,11 @@ The preceding code launches a Chromium-based browser, visits the application and
-We're currently (February 2023) migrating most browser module APIs to be async and return a Promise. To make this simpler, our goal is to use the async/await keywords. For more information, check out [Running browser tests](/javascript-api/xk6-browser/get-started/running-xk6-browser/). +We're currently (February 2023) migrating most browser module APIs to be async and return a Promise. To make this simpler, our goal is to use the async/await keywords. For more information, check out [Running browser tests](/javascript-api/k6-browser/get-started/running-browser-tests/).
-After running the test, the following [browser metrics](/javascript-api/xk6-browser/get-started/browser-metrics/) will be reported. +After running the test, the following [browser metrics](/javascript-api/k6-browser/get-started/browser-metrics/) will be reported. diff --git a/src/data/markdown/docs/30 xk6-browser/01 Get started/02 Running browser tests.md b/src/data/markdown/docs/30 k6-browser/01 Get started/02 Running browser tests.md similarity index 100% rename from src/data/markdown/docs/30 xk6-browser/01 Get started/02 Running browser tests.md rename to src/data/markdown/docs/30 k6-browser/01 Get started/02 Running browser tests.md diff --git a/src/data/markdown/docs/30 xk6-browser/01 Get started/03 Metrics.md b/src/data/markdown/docs/30 k6-browser/01 Get started/03 Metrics.md similarity index 100% rename from src/data/markdown/docs/30 xk6-browser/01 Get started/03 Metrics.md rename to src/data/markdown/docs/30 k6-browser/01 Get started/03 Metrics.md diff --git a/src/data/markdown/docs/30 xk6-browser/01 Get started/04 Selecting elements.md b/src/data/markdown/docs/30 k6-browser/01 Get started/04 Selecting elements.md similarity index 100% rename from src/data/markdown/docs/30 xk6-browser/01 Get started/04 Selecting elements.md rename to src/data/markdown/docs/30 k6-browser/01 Get started/04 Selecting elements.md diff --git a/src/data/markdown/docs/30 xk6-browser/01 Get started/images/Frontend-Backend-LoadTesting.png b/src/data/markdown/docs/30 k6-browser/01 Get started/images/Frontend-Backend-LoadTesting.png similarity index 100% rename from src/data/markdown/docs/30 xk6-browser/01 Get started/images/Frontend-Backend-LoadTesting.png rename to src/data/markdown/docs/30 k6-browser/01 Get started/images/Frontend-Backend-LoadTesting.png diff --git a/src/data/markdown/docs/30 k6-browser/02 API.md b/src/data/markdown/docs/30 k6-browser/02 API.md new file mode 100644 index 0000000000..4939d8b877 --- /dev/null +++ b/src/data/markdown/docs/30 k6-browser/02 API.md @@ -0,0 +1,62 @@ +--- +title: 'API' +excerpt: 'An overview of the browser-level APIs from browser module.' +--- + +The browser module APIs aim for rough compatibility with the [Playwright API for NodeJS](https://playwright.dev/docs/api/class-playwright). + +Note that because k6 does not run in NodeJS, the browser module APIs will slightly differ from their Playwright counterparts. + +## Modules + +The table below lists the importable properties from the top level module (`'k6/experimental/browser'`). + +| Property | Description | +|----------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| chromium | A [BrowserType](/javascript-api/k6-browser/api/browsertype) to launch tests in a Chromium-based browser. | +| devices | Returns predefined emulation settings for many end-user devices that can be used to simulate browser behavior on a mobile device. See the [devices example](#devices-example) below. | +| version | Returns the version number of k6 browser. | + +### Devices Example + +To emulate the browser behaviour on a mobile device and approximately measure the browser performance, you can import `devices` from `k6/experimental/browser`. + + + +```javascript +import { chromium, devices } from 'k6/experimental/browser'; + +export default async function () { + const browser = chromium.launch({ headless: false }); + const iphoneX = devices['iPhone X']; + const context = browser.newContext(iphoneX); + const page = context.newPage(); + + try { + await page.goto('https://test.k6.io/', { waitUntil: 'networkidle' }) + } finally { + page.close(); + browser.close(); + } +} +``` + + + +## Browser-level APIs + +| k6 Class | Description | +|-------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------| +| [Browser](/javascript-api/k6-browser/api/browser/) | The entry point for all tests and used to launch [BrowserContext](/javascript-api/k6-browser/api/browsercontext/)s and [Page](/javascript-api/k6-browser/api/page/)s. | +| [BrowserContext](/javascript-api/k6-browser/api/browsercontext/) | Enables independent browser sessions with separate [Page](/javascript-api/k6-browser/api/page/)s, cache, and cookies. | +| [BrowserType](/javascript-api/k6-browser/api/browsertype/) | The `BrowserType` is the entry point into launching a browser process; `chromium` is currently the only supported `BrowserType`. | +| [ElementHandle](/javascript-api/k6-browser/api/elementhandle/) | Represents an in-page DOM element. | +| [Frame](/javascript-api/k6-browser/api/frame/) | Access and interact with the [`Page`](/javascript-api/k6-browser/api/page/).'s `Frame`s. | +| [JSHandle](/javascript-api/k6-browser/api/jshandle) | Represents an in-page JavaScript object. | +| [Keyboard](/javascript-api/k6-browser/api/keyboard/) | Used to simulate the keyboard interactions with the associated [`Page`](/javascript-api/k6-browser/api/page/). | +| [Locator](/javascript-api/k6-browser/api/locator/) | The Locator API makes it easier to work with dynamically changing elements. | +| [Mouse](/javascript-api/k6-browser/api/mouse/) | Used to simulate the mouse interactions with the associated [`Page`](/javascript-api/k6-browser/api/page/). | +| [Page](/javascript-api/k6-browser/api/page/) | Provides methods to interact with a single tab in a [`Browser`](/javascript-api/k6-browser/api/browser/). | +| [Request](/javascript-api/k6-browser/api/request/) | Used to keep track of the request the [`Page`](/javascript-api/k6-browser/api/page/) makes. | +| [Response](/javascript-api/k6-browser/api/response/) | Represents the response received by the [`Page`](/javascript-api/k6-browser/api/page/). | +| [Touchscreen](/javascript-api/k6-browser/api/touchscreen/) | Used to simulate touch interactions with the associated [`Page`](/javascript-api/k6-browser/api/page/). | diff --git a/src/data/markdown/docs/30 k6-browser/02 API/01 Browser.md b/src/data/markdown/docs/30 k6-browser/02 API/01 Browser.md new file mode 100644 index 0000000000..214ac0cd42 --- /dev/null +++ b/src/data/markdown/docs/30 k6-browser/02 API/01 Browser.md @@ -0,0 +1,43 @@ +--- +title: "Browser" +excerpt: "Browser module: Browser Class" +--- + +The `Browser` class is the entry point for all your tests, and it is what interacts with the actual web browser via [Chrome DevTools Protocol](https://chromedevtools.github.io/devtools-protocol/) (CDP). It manages: +- [BrowserContext](/javascript-api/k6-browser/api/browsercontext/) which is where you can set a variety of attributes to control the behavior of pages; +- and [Page](/javascript-api/k6-browser/api/page/) which is where your rendered site is displayed. + +A new Browser instance (hence a new browser process) can be created using the `launch()` method of the `chromium` module from `'k6/experimental/browser'`. + +| Method | Description | +|-------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------| +| [browser.close()](/javascript-api/k6-browser/api/browser/close) | Closes the browser and all of its pages (if any were opened). | +| [browser.contexts()](/javascript-api/k6-browser/api/browser/contexts) | Lets you access all open [BrowserContext](/javascript-api/k6-browser/api/browsercontext/)s. | +| [browser.isConnected](/javascript-api/k6-browser/api/browser/isconnected) | Indicates whether the [CDP](https://chromedevtools.github.io/devtools-protocol/) connection to the browser process is active or not. | +| [browser.newContext([options])](/javascript-api/k6-browser/api/browser/newcontext/) | Creates and returns a new [BrowserContext](/javascript-api/k6-browser/api/browsercontext/). | +| [browser.newPage([options])](/javascript-api/k6-browser/api/browser/newpage) | Creates a new [Page](/javascript-api/k6-browser/api/page/) in a new [BrowserContext](/javascript-api/k6-browser/api/browsercontext/) and returns the page. | +| [browser.on('disconnected')](/javascript-api/k6-browser/api/browser/on) | Detects the disconnected event from the browser application. | +| [browser.version()](/javascript-api/k6-browser/api/browser/version) | Returns the browser application's version. | + +### Example + + + +```javascript +import { chromium } from 'k6/experimental/browser'; + +export default async function () { + const browser = chromium.launch(); + const context = browser.newContext(); + const page = context.newPage(); + + try { + await page.goto('https://test.k6.io/', { waitUntil: 'networkidle' }); + } finally { + page.close(); + browser.close(); + } +} +``` + + diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/close.md b/src/data/markdown/docs/30 k6-browser/02 API/01 Browser/close.md similarity index 78% rename from src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/close.md rename to src/data/markdown/docs/30 k6-browser/02 API/01 Browser/close.md index f90b2dd3da..c25670b443 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/close.md +++ b/src/data/markdown/docs/30 k6-browser/02 API/01 Browser/close.md @@ -5,7 +5,7 @@ excerpt: 'Browser module: Browser.close method' Closes the browser and all of its pages (if any were opened). -The [Browser](/javascript-api/xk6-browser/api/browser/) object cannot be used anymore and is considered disposed of. +The [Browser](/javascript-api/k6-browser/api/browser/) object cannot be used anymore and is considered disposed of. ### Example diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/contexts.md b/src/data/markdown/docs/30 k6-browser/02 API/01 Browser/contexts.md similarity index 77% rename from src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/contexts.md rename to src/data/markdown/docs/30 k6-browser/02 API/01 Browser/contexts.md index 6d6c0c6e1a..d4d2f4bb0d 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/contexts.md +++ b/src/data/markdown/docs/30 k6-browser/02 API/01 Browser/contexts.md @@ -3,13 +3,13 @@ title: 'contexts()' excerpt: 'Browser module: Browser.contexts method' --- -Access all open [BrowserContext](/javascript-api/xk6-browser/api/browsercontext/)s. +Access all open [BrowserContext](/javascript-api/k6-browser/api/browsercontext/)s. ### Returns | Type | Description | | ----- | ------------------------------------------------------------------------------ | -| Array | Array of [BrowserContext](/javascript-api/xk6-browser/api/browsercontext/) objects | +| Array | Array of [BrowserContext](/javascript-api/k6-browser/api/browsercontext/) objects | ### Example diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/isconnected.md b/src/data/markdown/docs/30 k6-browser/02 API/01 Browser/isconnected.md similarity index 85% rename from src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/isconnected.md rename to src/data/markdown/docs/30 k6-browser/02 API/01 Browser/isconnected.md index 79dcbaf36d..4a5fd02ab2 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/isconnected.md +++ b/src/data/markdown/docs/30 k6-browser/02 API/01 Browser/isconnected.md @@ -16,7 +16,7 @@ Indicates whether the [CDP](https://chromedevtools.github.io/devtools-protocol/) | Type | Description | | ------- | ---------------------------------------------------------------------------------------------- | -| boolean | Returns `true` if [Browser](/javascript-api/xk6-browser/api/browser/) is connected to the browser application. Otherwise, returns `false`. | +| boolean | Returns `true` if [Browser](/javascript-api/k6-browser/api/browser/) is connected to the browser application. Otherwise, returns `false`. | ### Example diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/newcontext--options--.md b/src/data/markdown/docs/30 k6-browser/02 API/01 Browser/newcontext--options--.md similarity index 96% rename from src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/newcontext--options--.md rename to src/data/markdown/docs/30 k6-browser/02 API/01 Browser/newcontext--options--.md index ec4cf9c113..4b0994c771 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/newcontext--options--.md +++ b/src/data/markdown/docs/30 k6-browser/02 API/01 Browser/newcontext--options--.md @@ -3,7 +3,7 @@ title: 'newContext([options])' excerpt: 'Browser module: Browser.newContext method' --- -Creates and returns a new [BrowserContext](/javascript-api/xk6-browser/api/browsercontext/). +Creates and returns a new [BrowserContext](/javascript-api/k6-browser/api/browsercontext/). @@ -27,8 +27,8 @@ Creates and returns a new [BrowserContext](/javascript-api/xk6-browser/api/brows | 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()](/javascript-api/xk6-browser/api/browsercontext#browsercontext-grantpermissions-permissions-options) 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()](/javascript-api/xk6-browser/api/page#page-emulatemedia-options) for the options. | +| options.permissions | Array | `null` | Permissions to grant for the context's pages. See [browserContext.grantPermissions()](/javascript-api/k6-browser/api/browsercontext#browsercontext-grantpermissions-permissions-options) 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()](/javascript-api/k6-browser/api/page#page-emulatemedia-options) 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. | @@ -44,7 +44,7 @@ Creates and returns a new [BrowserContext](/javascript-api/xk6-browser/api/brows | Type | Description | | ------ | -------------------------------------------------------------------- | -| object | [BrowserContext](/javascript-api/xk6-browser/api/browsercontext/) object | +| object | [BrowserContext](/javascript-api/k6-browser/api/browsercontext/) object | ### deviceScaleFactor example diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/newpage--options--.md b/src/data/markdown/docs/30 k6-browser/02 API/01 Browser/newpage--options--.md similarity index 95% rename from src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/newpage--options--.md rename to src/data/markdown/docs/30 k6-browser/02 API/01 Browser/newpage--options--.md index cdd9641234..28bd7666c1 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/newpage--options--.md +++ b/src/data/markdown/docs/30 k6-browser/02 API/01 Browser/newpage--options--.md @@ -3,7 +3,7 @@ title: 'newPage([options])' excerpt: 'Browser module: Browser.newPage method' --- -Creates a new [Page](/javascript-api/xk6-browser/api/page/) in a new [BrowserContext](/javascript-api/xk6-browser/api/browsercontext/) and returns the page. You do not need to create a new `BrowserContext` prior to using `newPage`. +Creates a new [Page](/javascript-api/k6-browser/api/page/) in a new [BrowserContext](/javascript-api/k6-browser/api/browsercontext/) and returns the page. You do not need to create a new `BrowserContext` prior to using `newPage`. @@ -27,8 +27,8 @@ Creates a new [Page](/javascript-api/xk6-browser/api/page/) in a new [BrowserCon | 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()](/javascript-api/xk6-browser/api/browsercontext#browsercontext-grantpermissions-permissions-options) 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()](/javascript-api/xk6-browser/api/page#page-emulatemedia-options) for the options. | +| options.permissions | Array | `null` | Permissions to grant for the context's pages. See [browserContext.grantPermissions()](/javascript-api/k6-browser/api/browsercontext#browsercontext-grantpermissions-permissions-options) 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()](/javascript-api/k6-browser/api/page#page-emulatemedia-options) 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. | @@ -44,7 +44,7 @@ Creates a new [Page](/javascript-api/xk6-browser/api/page/) in a new [BrowserCon | Type | Description | | ------ | ------------------------------------------------ | -| object | [Page](/javascript-api/xk6-browser/api/page/) object | +| object | [Page](/javascript-api/k6-browser/api/page/) object | ### deviceScaleFactor example diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/on--event--.md b/src/data/markdown/docs/30 k6-browser/02 API/01 Browser/on--event--.md similarity index 88% rename from src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/on--event--.md rename to src/data/markdown/docs/30 k6-browser/02 API/01 Browser/on--event--.md index 492a5f2abb..9a2cbcd5f1 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/on--event--.md +++ b/src/data/markdown/docs/30 k6-browser/02 API/01 Browser/on--event--.md @@ -11,10 +11,10 @@ Detects events from the browser application. ### Returns -The returned promise will be resolved when the [Browser](/javascript-api/xk6-browser/api/browser/) disconnects from the browser application. Possible reasons for this might be happening as follows: +The returned promise will be resolved when the [Browser](/javascript-api/k6-browser/api/browser/) disconnects from the browser application. Possible reasons for this might be happening as follows: * Closed or crashed browser application. -* Calling of the [browser.close()](/javascript-api/xk6-browser/api/browser/close) method. +* Calling of the [browser.close()](/javascript-api/k6-browser/api/browser/close) method. | Type | Description | | ------- | ------------------------------------------------------------------------------- | diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/version.md b/src/data/markdown/docs/30 k6-browser/02 API/01 Browser/version.md similarity index 100% rename from src/data/markdown/docs/30 xk6-browser/02 API/01 Browser/version.md rename to src/data/markdown/docs/30 k6-browser/02 API/01 Browser/version.md diff --git a/src/data/markdown/docs/30 k6-browser/02 API/02 BrowserContext.md b/src/data/markdown/docs/30 k6-browser/02 API/02 BrowserContext.md new file mode 100644 index 0000000000..f1e1c501ed --- /dev/null +++ b/src/data/markdown/docs/30 k6-browser/02 API/02 BrowserContext.md @@ -0,0 +1,26 @@ +--- +title: "BrowserContext" +excerpt: "Browser module: BrowserContext Class" +--- + +`BrowserContext`s provide a way to operate multiple independent sessions, with separate pages, cache, and cookies. A default `BrowserContext` is created when a [Browser](/javascript-api/k6-browser/api/browser) is launched. + +The [Browser](/javascript-api/k6-browser/api/browser) type is used to create a new `BrowserContext`. + +If a [page](/javascript-api/k6-browser/api/page) opens another page, e.g. with a `window.open` call, the popup will belong to the parent page's `BrowserContext`. + + +| Method | Description | +|-------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------| +| [BrowserContext.browser()](/javascript-api/k6-browser/api/browsercontext/browser/) | Returns the [Browser](/javascript-api/k6-browser/api/browser) instance that this `BrowserContext` belongs to. | +| [BrowserContext.clearCookies()](/javascript-api/k6-browser/api/browsercontext/clearcookies/) | Clear the `BrowserContext`'s cookies. | +| [BrowserContext.clearPermissions()](/javascript-api/k6-browser/api/browsercontext/clearpermissions) | Clears all permission overrides for the `BrowserContext`. | +| [BrowserContext.close()](/javascript-api/k6-browser/api/browsercontext/close) | Close the `BrowserContext` and all its [page](/javascript-api/k6-browser/api/page)s. | +| [BrowserContext.grantPermissions(permissions[, options])](/javascript-api/k6-browser/api/browsercontext/grantpermissions) | Grants specified permissions to the `BrowserContext`. | +| [BrowserContext.newPage()](/javascript-api/k6-browser/api/browsercontext/newpage) | Uses the `BrowserContext` to create a new [Page](/javascript-api/k6-browser/api/page/) and returns it. | +| [BrowserContext.pages()](/javascript-api/k6-browser/api/browsercontext/pages) | Returns a list of [page](/javascript-api/k6-browser/api/page)s that belongs to the `BrowserContext`. | +| [BrowserContext.setDefaultNavigationTimeout(timeout)](/javascript-api/k6-browser/api/browsercontext/setdefaultnavigationtimeout) | Sets the default navigation timeout in milliseconds. | +| [BrowserContext.setDefaultTimeout(timeout)](/javascript-api/k6-browser/api/browsercontext/setdefaulttimeout) | Sets the default maximum timeout for all methods accepting a timeout option in milliseconds. | +| [BrowserContext.setGeolocation(geolocation)](/javascript-api/k6-browser/api/browsercontext/setgeolocation) | Sets the `BrowserContext`'s geolocation. | +| [BrowserContext.setOffline(offline)](/javascript-api/k6-browser/api/browsercontext/setoffline) | Toggles the `BrowserContext`'s connectivity on/off. | +| [BrowserContext.waitForEvent(event[, optionsOrPredicate])](/javascript-api/k6-browser/api/browsercontext/waitforevent) | Waits for the event to fire and passes its value into the predicate function. | diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/browser.md b/src/data/markdown/docs/30 k6-browser/02 API/02 BrowserContext/browser.md similarity index 75% rename from src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/browser.md rename to src/data/markdown/docs/30 k6-browser/02 API/02 BrowserContext/browser.md index 38bc3d015c..95ab0cc4a1 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/browser.md +++ b/src/data/markdown/docs/30 k6-browser/02 API/02 BrowserContext/browser.md @@ -3,14 +3,14 @@ title: 'browser()' excerpt: 'Returns the browser instance that this BrowserContext belongs to.' --- -Returns the [browser](/javascript-api/xk6-browser/api/browser) instance that this `BrowserContext` belongs to. +Returns the [browser](/javascript-api/k6-browser/api/browser) instance that this `BrowserContext` belongs to. ### Returns | Type | Description | | ---------------------------------------------- | ----------------------- | -| [Browser](/javascript-api/xk6-browser/api/browser/) | The Browser instance. | +| [Browser](/javascript-api/k6-browser/api/browser/) | The Browser instance. | ### Example diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/clearCookies.md b/src/data/markdown/docs/30 k6-browser/02 API/02 BrowserContext/clearCookies.md similarity index 100% rename from src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/clearCookies.md rename to src/data/markdown/docs/30 k6-browser/02 API/02 BrowserContext/clearCookies.md diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/clearPermissions.md b/src/data/markdown/docs/30 k6-browser/02 API/02 BrowserContext/clearPermissions.md similarity index 100% rename from src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/clearPermissions.md rename to src/data/markdown/docs/30 k6-browser/02 API/02 BrowserContext/clearPermissions.md diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/close.md b/src/data/markdown/docs/30 k6-browser/02 API/02 BrowserContext/close.md similarity index 62% rename from src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/close.md rename to src/data/markdown/docs/30 k6-browser/02 API/02 BrowserContext/close.md index c0bc032671..ce21119e1b 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/close.md +++ b/src/data/markdown/docs/30 k6-browser/02 API/02 BrowserContext/close.md @@ -3,7 +3,7 @@ title: 'close()' excerpt: 'Close the BrowserContext and all its pages.' --- -Close the `BrowserContext` and all its [page](/javascript-api/xk6-browser/api/page)s. The `BrowserContext` is unusable after this call and a new one must be created. This is typically called to cleanup before ending the test. +Close the `BrowserContext` and all its [page](/javascript-api/k6-browser/api/page)s. The `BrowserContext` is unusable after this call and a new one must be created. This is typically called to cleanup before ending the test. ### Example diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/grantPermissions.md b/src/data/markdown/docs/30 k6-browser/02 API/02 BrowserContext/grantPermissions.md similarity index 100% rename from src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/grantPermissions.md rename to src/data/markdown/docs/30 k6-browser/02 API/02 BrowserContext/grantPermissions.md diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/newPage.md b/src/data/markdown/docs/30 k6-browser/02 API/02 BrowserContext/newPage.md similarity index 86% rename from src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/newPage.md rename to src/data/markdown/docs/30 k6-browser/02 API/02 BrowserContext/newPage.md index f953c6672d..7459ed68b7 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/newPage.md +++ b/src/data/markdown/docs/30 k6-browser/02 API/02 BrowserContext/newPage.md @@ -3,14 +3,14 @@ title: 'newPage()' excerpt: 'Creates a new page inside this BrowserContext.' --- -Uses the `BrowserContext` to create a new [Page](/javascript-api/xk6-browser/api/page/) and returns it. +Uses the `BrowserContext` to create a new [Page](/javascript-api/k6-browser/api/page/) and returns it. ### Returns | Type | Description | | ------ | ------------------------------------------------------- | -| object | A new [Page](/javascript-api/xk6-browser/api/page/) object. | +| object | A new [Page](/javascript-api/k6-browser/api/page/) object. | ### Example diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/pages.md b/src/data/markdown/docs/30 k6-browser/02 API/02 BrowserContext/pages.md similarity index 88% rename from src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/pages.md rename to src/data/markdown/docs/30 k6-browser/02 API/02 BrowserContext/pages.md index 3e4a759ea3..65b51ddf97 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/pages.md +++ b/src/data/markdown/docs/30 k6-browser/02 API/02 BrowserContext/pages.md @@ -10,7 +10,7 @@ This feature has **known issues**. For details, refer to
-Returns all open [Page](/javascript-api/xk6-browser/api/page/)s in the `BrowserContext`. +Returns all open [Page](/javascript-api/k6-browser/api/page/)s in the `BrowserContext`. ### Returns diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/setDefaultNavigationTimeout.md b/src/data/markdown/docs/30 k6-browser/02 API/02 BrowserContext/setDefaultNavigationTimeout.md similarity index 100% rename from src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/setDefaultNavigationTimeout.md rename to src/data/markdown/docs/30 k6-browser/02 API/02 BrowserContext/setDefaultNavigationTimeout.md diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/setDefaultTimeout.md b/src/data/markdown/docs/30 k6-browser/02 API/02 BrowserContext/setDefaultTimeout.md similarity index 100% rename from src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/setDefaultTimeout.md rename to src/data/markdown/docs/30 k6-browser/02 API/02 BrowserContext/setDefaultTimeout.md diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/setGeolocation.md b/src/data/markdown/docs/30 k6-browser/02 API/02 BrowserContext/setGeolocation.md similarity index 100% rename from src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/setGeolocation.md rename to src/data/markdown/docs/30 k6-browser/02 API/02 BrowserContext/setGeolocation.md diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/setOffline.md b/src/data/markdown/docs/30 k6-browser/02 API/02 BrowserContext/setOffline.md similarity index 100% rename from src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/setOffline.md rename to src/data/markdown/docs/30 k6-browser/02 API/02 BrowserContext/setOffline.md diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/waitForEvent.md b/src/data/markdown/docs/30 k6-browser/02 API/02 BrowserContext/waitForEvent.md similarity index 96% rename from src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/waitForEvent.md rename to src/data/markdown/docs/30 k6-browser/02 API/02 BrowserContext/waitForEvent.md index ab7df5e3fe..b568579112 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext/waitForEvent.md +++ b/src/data/markdown/docs/30 k6-browser/02 API/02 BrowserContext/waitForEvent.md @@ -30,4 +30,4 @@ Waits for the event to fire and passes its value into the predicate function. Re | Type | Description | | ------ | ------------------------------------------------ | -| object | [Page](/javascript-api/xk6-browser/api/page/) object | +| object | [Page](/javascript-api/k6-browser/api/page/) object | diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/03 BrowserType.md b/src/data/markdown/docs/30 k6-browser/02 API/03 BrowserType.md similarity index 73% rename from src/data/markdown/docs/30 xk6-browser/02 API/03 BrowserType.md rename to src/data/markdown/docs/30 k6-browser/02 API/03 BrowserType.md index 44082c719f..bb77c69166 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/03 BrowserType.md +++ b/src/data/markdown/docs/30 k6-browser/02 API/03 BrowserType.md @@ -8,10 +8,10 @@ The `BrowserType` is the entry point into launching a browser process; `chromium | Method | Description | |-----------------------------------------------------------------------------------------|------------------------------------------------------------------------------| | browserType.connect([options]) | Connect attaches k6 browser to an existing browser instance. | -| [browserType.executablePath()](/javascript-api/xk6-browser/api/browsertype/executablepath/) | Returns the path where the extension expects to find the browser executable. | -| [browserType.launch([options])](/javascript-api/xk6-browser/api/browsertype/launch/) | Launches a new browser process. | +| [browserType.executablePath()](/javascript-api/k6-browser/api/browsertype/executablepath/) | Returns the path where the extension expects to find the browser executable. | +| [browserType.launch([options])](/javascript-api/k6-browser/api/browsertype/launch/) | Launches a new browser process. | | browserType.launchPersistentContext(userDataDir, [options]) | Launches the browser with persistent storage. | -| [browserType.name()](/javascript-api/xk6-browser/api/browsertype/name/) | Returns the name of the `BrowserType`; currently it will return `chromium`. | +| [browserType.name()](/javascript-api/k6-browser/api/browsertype/name/) | Returns the name of the `BrowserType`; currently it will return `chromium`. | ## Example diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/03 BrowserType/executablePath.md b/src/data/markdown/docs/30 k6-browser/02 API/03 BrowserType/executablePath.md similarity index 100% rename from src/data/markdown/docs/30 xk6-browser/02 API/03 BrowserType/executablePath.md rename to src/data/markdown/docs/30 k6-browser/02 API/03 BrowserType/executablePath.md diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/03 BrowserType/launch--options--.md b/src/data/markdown/docs/30 k6-browser/02 API/03 BrowserType/launch--options--.md similarity index 98% rename from src/data/markdown/docs/30 xk6-browser/02 API/03 BrowserType/launch--options--.md rename to src/data/markdown/docs/30 k6-browser/02 API/03 BrowserType/launch--options--.md index 60c81abe7a..a0036e46ff 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/03 BrowserType/launch--options--.md +++ b/src/data/markdown/docs/30 k6-browser/02 API/03 BrowserType/launch--options--.md @@ -23,7 +23,7 @@ Launches a new browser process. | Type | Description | |--------|--------------------------------------------------------| -| object | [Browser](/javascript-api/xk6-browser/api/browser/) object | +| object | [Browser](/javascript-api/k6-browser/api/browser/) object | ## Example diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/03 BrowserType/name.md b/src/data/markdown/docs/30 k6-browser/02 API/03 BrowserType/name.md similarity index 100% rename from src/data/markdown/docs/30 xk6-browser/02 API/03 BrowserType/name.md rename to src/data/markdown/docs/30 k6-browser/02 API/03 BrowserType/name.md diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/04-element-handle.md b/src/data/markdown/docs/30 k6-browser/02 API/04-element-handle.md similarity index 100% rename from src/data/markdown/docs/30 xk6-browser/02 API/04-element-handle.md rename to src/data/markdown/docs/30 k6-browser/02 API/04-element-handle.md diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/05-frame.md b/src/data/markdown/docs/30 k6-browser/02 API/05-frame.md similarity index 100% rename from src/data/markdown/docs/30 xk6-browser/02 API/05-frame.md rename to src/data/markdown/docs/30 k6-browser/02 API/05-frame.md diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/06-js-handle.md b/src/data/markdown/docs/30 k6-browser/02 API/06-js-handle.md similarity index 100% rename from src/data/markdown/docs/30 xk6-browser/02 API/06-js-handle.md rename to src/data/markdown/docs/30 k6-browser/02 API/06-js-handle.md diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/07-keyboard.md b/src/data/markdown/docs/30 k6-browser/02 API/07-keyboard.md similarity index 100% rename from src/data/markdown/docs/30 xk6-browser/02 API/07-keyboard.md rename to src/data/markdown/docs/30 k6-browser/02 API/07-keyboard.md diff --git a/src/data/markdown/docs/30 k6-browser/02 API/08 Locator.md b/src/data/markdown/docs/30 k6-browser/02 API/08 Locator.md new file mode 100644 index 0000000000..6f9809a40f --- /dev/null +++ b/src/data/markdown/docs/30 k6-browser/02 API/08 Locator.md @@ -0,0 +1,111 @@ +--- +title: "Locator" +excerpt: "Browser module: Locator Class" +--- + +The Locator API makes it easier to work with dynamically changing elements. Some of the benefits of using it over existing ways to locate an element (e.g. `Page.$()`) include: + +- Helps with writing robust tests by finding an element even if the underlying frame navigates. +- Makes it easier to work with dynamic web pages and SPAs built with Svelte, React, Vue, etc. +- Enables the use of test abstractions like the Page Object Model (POM) pattern to simplify and organize tests. +- `strict` mode is enabled for all `locator` methods, which means that if more than one element matches the given selector it will throw an error. + +Locator can be created with the [page.locator(selector[, options])](/javascript-api/k6-browser/api/page/#page-locator) method. + +| Method | Description | +|---------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------| +| [locator.check([options])](/javascript-api/k6-browser/api/locator/check) | Select the input checkbox. | +| [locator.click([options])](/javascript-api/k6-browser/api/locator/click) | Mouse click on the chosen element. | +| [locator.dblclick([options])](/javascript-api/k6-browser/api/locator/dblclick) | Mouse double click on the chosen element. | +| [locator.dispatchEvent(type, eventInit, [options])](/javascript-api/k6-browser/api/locator/dispatchevent) | Dispatches HTML DOM event types e.g. `'click'`. | +| [locator.fill(value, [options])](/javascript-api/k6-browser/api/locator/fill) | Fill an `input`, `textarea` or `contenteditable` element with the provided value. | +| [locator.focus([options])](/javascript-api/k6-browser/api/locator/focus) | Calls [focus](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/focus) on the element, if it can be focused. | +| [locator.getAttribute(name, [options])](/javascript-api/k6-browser/api/locator/getattribute) | Returns the element attribute value for the given attribute name. | +| [locator.hover([options])](/javascript-api/k6-browser/api/locator/hover) | Hovers over the element. | +| [locator.innerHTML([options])](/javascript-api/k6-browser/api/locator/innerhtml) | Returns the `element.innerHTML`. | +| [locator.innerText([options])](/javascript-api/k6-browser/api/locator/innertext) | Returns the `element.innerText`. | +| [locator.inputValue([options])](/javascript-api/k6-browser/api/locator/inputvalue) | Returns `input.value` for the selected `input`, `textarea` or `select` element. | +| [locator.isChecked([options])](/javascript-api/k6-browser/api/locator/ischecked) | Checks if the `checkbox` `input` type is selected. | +| [locator.isDisabled([options])](/javascript-api/k6-browser/api/locator/isdisabled) | Checks if the element is `disabled`. | +| [locator.isEditable([options])](/javascript-api/k6-browser/api/locator/iseditable) | Checks if the element is `editable`. | +| [locator.isEnabled([options])](/javascript-api/k6-browser/api/locator/isenabled) | Checks if the element is `enabled`. | +| [locator.isHidden([options])](/javascript-api/k6-browser/api/locator/ishidden) | Checks if the element is `hidden`. | +| [locator.isVisible([options])](/javascript-api/k6-browser/api/locator/isvisible) | Checks if the element is `visible`. | +| [locator.press(key, [options])](/javascript-api/k6-browser/api/locator/press) | Press a single key on the keyboard or a combination of keys. | +| [locator.selectOption(values, [options])](/javascript-api/k6-browser/api/locator/selectoption) | Select one or more options which match the values. | +| [locator.tap([options])](/javascript-api/k6-browser/api/locator/tap) | Tap on the chosen element. | +| [locator.textContent([options])](/javascript-api/k6-browser/api/locator/textcontent) | Returns the `element.textContent`. | +| [locator.type(text, [options])](/javascript-api/k6-browser/api/locator/type) | Type in the text into the input field. | +| [locator.uncheck([options])](/javascript-api/k6-browser/api/locator/uncheck) | Unselect the `input` checkbox. | +| [locator.waitFor([options])](/javascript-api/k6-browser/api/locator/waitfor) | Wait for the element to be in a particular state e.g. `visible`. | + +### Example + + + +```javascript +import { chromium } from 'k6/experimental/browser'; + +export default async function () { + const browser = chromium.launch({ + headless: false, + }); + const context = browser.newContext(); + const page = context.newPage(); + + try { + await page.goto("https://test.k6.io/flip_coin.php", { + waitUntil: "networkidle", + }) + + /* + In this example, we will use two locators, matching a + different betting button on the page. If you were to query + the buttons once and save them as below, you would see an + error after the initial navigation. Try it! + + const heads = page.$("input[value='Bet on heads!']"); + const tails = page.$("input[value='Bet on tails!']"); + + The Locator API allows you to get a fresh element handle each + time you use one of the locator methods. And, you can carry a + locator across frame navigations. Let's create two locators; + each locates a button on the page. + */ + const heads = page.locator("input[value='Bet on heads!']"); + const tails = page.locator("input[value='Bet on tails!']"); + + const currentBet = page.locator("//p[starts-with(text(),'Your bet: ')]"); + + // In the following Promise.all the tails locator clicks + // on the tails button by using the locator's selector. + // Since clicking on each button causes page navigation, + // waitForNavigation is needed -- this is because the page + // won't be ready until the navigation completes. + // Setting up the waitForNavigation first before the click + // is important to avoid race conditions. + await Promise.all([ + page.waitForNavigation(), + tails.click(), + ]); + console.log(currentBet.innerText()); + // the heads locator clicks on the heads button + // by using the locator's selector. + await Promise.all([ + page.waitForNavigation(), + heads.click(), + ]); + console.log(currentBet.innerText()); + await Promise.all([ + page.waitForNavigation(), + tails.click(), + ]); + console.log(currentBet.innerText()); + } finally { + page.close(); + browser.close(); + } +} +``` + + diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/check--options--.md b/src/data/markdown/docs/30 k6-browser/02 API/08 Locator/check--options--.md similarity index 97% rename from src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/check--options--.md rename to src/data/markdown/docs/30 k6-browser/02 API/08 Locator/check--options--.md index 1a32e05242..f40975d134 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/check--options--.md +++ b/src/data/markdown/docs/30 k6-browser/02 API/08 Locator/check--options--.md @@ -22,7 +22,7 @@ Use this method to select an `input` checkbox. | options.position | object | `null` | A point to use relative to the top left corner of the element. If not supplied, a visible point of the element is used. | | options.position.x | number | `0` | The x coordinate. | | options.position.y | number | `0` | The y coordinate. | -| options.timeout | number | `30000` | Maximum time in milliseconds. Pass `0` to disable the timeout. Default is overridden by the `setDefaultTimeout` option on [BrowserContext](/javascript-api/xk6-browser/api/browsercontext/) or [Page](/javascript-api/xk6-browser/api/page/). | +| options.timeout | number | `30000` | Maximum time in milliseconds. Pass `0` to disable the timeout. Default is overridden by the `setDefaultTimeout` option on [BrowserContext](/javascript-api/k6-browser/api/browsercontext/) or [Page](/javascript-api/k6-browser/api/page/). | | options.trial | boolean | `false` | Setting this to `true` will perform the actionability checks without performing the action. | diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/click--options--.md b/src/data/markdown/docs/30 k6-browser/02 API/08 Locator/click--options--.md similarity index 97% rename from src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/click--options--.md rename to src/data/markdown/docs/30 k6-browser/02 API/08 Locator/click--options--.md index a7dd0a84b3..0e933bb47f 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/click--options--.md +++ b/src/data/markdown/docs/30 k6-browser/02 API/08 Locator/click--options--.md @@ -25,7 +25,7 @@ Mouse click on the chosen element. | options.position | object | `null` | A point to use relative to the top left corner of the element. If not supplied, a visible point of the element is used. | | options.position.x | number | `0` | The x coordinate. | | options.position.y | number | `0` | The y coordinate. | -| options.timeout | number | `30000` | Maximum time in milliseconds. Pass `0` to disable the timeout. Default is overridden by the `setDefaultTimeout` option on [BrowserContext](/javascript-api/xk6-browser/api/browsercontext/) or [Page](/javascript-api/xk6-browser/api/page/). | +| options.timeout | number | `30000` | Maximum time in milliseconds. Pass `0` to disable the timeout. Default is overridden by the `setDefaultTimeout` option on [BrowserContext](/javascript-api/k6-browser/api/browsercontext/) or [Page](/javascript-api/k6-browser/api/page/). | | options.trial | boolean | `false` | Setting this to `true` will perform the actionability checks without performing the action. | diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/dblclick--options--.md b/src/data/markdown/docs/30 k6-browser/02 API/08 Locator/dblclick--options--.md similarity index 97% rename from src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/dblclick--options--.md rename to src/data/markdown/docs/30 k6-browser/02 API/08 Locator/dblclick--options--.md index 8f7cc57a0d..7c2e01a622 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/dblclick--options--.md +++ b/src/data/markdown/docs/30 k6-browser/02 API/08 Locator/dblclick--options--.md @@ -25,7 +25,7 @@ Mouse double click on the chosen element. | options.position | object | `null` | A point to use relative to the top left corner of the element. If not supplied, a visible point of the element is used. | | options.position.x | number | `0` | The x coordinate. | | options.position.y | number | `0` | The y coordinate. | -| options.timeout | number | `30000` | Maximum time in milliseconds. Pass `0` to disable the timeout. Default is overridden by the `setDefaultTimeout` option on [BrowserContext](/javascript-api/xk6-browser/api/browsercontext/) or [Page](/javascript-api/xk6-browser/api/page/). | +| options.timeout | number | `30000` | Maximum time in milliseconds. Pass `0` to disable the timeout. Default is overridden by the `setDefaultTimeout` option on [BrowserContext](/javascript-api/k6-browser/api/browsercontext/) or [Page](/javascript-api/k6-browser/api/page/). | | options.trial | boolean | `false` | Setting this to `true` will perform the actionability checks without performing the action. | diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/dispatchevent--options--.md b/src/data/markdown/docs/30 k6-browser/02 API/08 Locator/dispatchevent--options--.md similarity index 97% rename from src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/dispatchevent--options--.md rename to src/data/markdown/docs/30 k6-browser/02 API/08 Locator/dispatchevent--options--.md index e567c462da..acf41ed5d1 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/dispatchevent--options--.md +++ b/src/data/markdown/docs/30 k6-browser/02 API/08 Locator/dispatchevent--options--.md @@ -12,7 +12,7 @@ Dispatches HTML DOM event types e.g. `'click'`. | type | string | `''` | DOM event type e.g. `'click'`. | | eventInit | object | `null` | Optional event specific properties. See [eventInit](#eventinit) for more details. | | options | object | `null` | | -| options.timeout | number | `30000` | Maximum time in milliseconds. Pass `0` to disable the timeout. Default is overridden by the `setDefaultTimeout` option on [BrowserContext](/javascript-api/xk6-browser/api/browsercontext/) or [Page](/javascript-api/xk6-browser/api/page/). | +| options.timeout | number | `30000` | Maximum time in milliseconds. Pass `0` to disable the timeout. Default is overridden by the `setDefaultTimeout` option on [BrowserContext](/javascript-api/k6-browser/api/browsercontext/) or [Page](/javascript-api/k6-browser/api/page/). | diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/fill--options--.md b/src/data/markdown/docs/30 k6-browser/02 API/08 Locator/fill--options--.md similarity index 96% rename from src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/fill--options--.md rename to src/data/markdown/docs/30 k6-browser/02 API/08 Locator/fill--options--.md index fb9aef23a0..b00bf3ba9b 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/fill--options--.md +++ b/src/data/markdown/docs/30 k6-browser/02 API/08 Locator/fill--options--.md @@ -13,7 +13,7 @@ Fill an `input`, `textarea` or `contenteditable` element with the provided value | options | object | `null` | | | options.force | boolean | `false` | Setting this to `true` will bypass the actionability checks (`visible`, `stable`, `enabled`). | | options.noWaitAfter | boolean | `false` | If set to `true` and a navigation occurs from performing this action, it will not wait for it to complete. | -| options.timeout | number | `30000` | Maximum time in milliseconds. Pass `0` to disable the timeout. Default is overridden by the `setDefaultTimeout` option on [BrowserContext](/javascript-api/xk6-browser/api/browsercontext/) or [Page](/javascript-api/xk6-browser/api/page/). | +| options.timeout | number | `30000` | Maximum time in milliseconds. Pass `0` to disable the timeout. Default is overridden by the `setDefaultTimeout` option on [BrowserContext](/javascript-api/k6-browser/api/browsercontext/) or [Page](/javascript-api/k6-browser/api/page/). | diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/focus--options--.md b/src/data/markdown/docs/30 k6-browser/02 API/08 Locator/focus--options--.md similarity index 94% rename from src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/focus--options--.md rename to src/data/markdown/docs/30 k6-browser/02 API/08 Locator/focus--options--.md index f37cd14e07..5838ed7f86 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/focus--options--.md +++ b/src/data/markdown/docs/30 k6-browser/02 API/08 Locator/focus--options--.md @@ -10,7 +10,7 @@ Calls [focus](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/focus | Parameter | Type | Default | Description | |-----------------|--------|---------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | options | object | `null` | | -| options.timeout | number | `30000` | Maximum time in milliseconds. Pass `0` to disable the timeout. Default is overridden by the `setDefaultTimeout` option on [BrowserContext](/javascript-api/xk6-browser/api/browsercontext/) or [Page](/javascript-api/xk6-browser/api/page/). | +| options.timeout | number | `30000` | Maximum time in milliseconds. Pass `0` to disable the timeout. Default is overridden by the `setDefaultTimeout` option on [BrowserContext](/javascript-api/k6-browser/api/browsercontext/) or [Page](/javascript-api/k6-browser/api/page/). | diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/getattribute--options--.md b/src/data/markdown/docs/30 k6-browser/02 API/08 Locator/getattribute--options--.md similarity index 95% rename from src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/getattribute--options--.md rename to src/data/markdown/docs/30 k6-browser/02 API/08 Locator/getattribute--options--.md index 31b9e76991..6fdceec2c2 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/getattribute--options--.md +++ b/src/data/markdown/docs/30 k6-browser/02 API/08 Locator/getattribute--options--.md @@ -11,7 +11,7 @@ Returns the element attribute value for the given attribute name. |-----------------|--------|---------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | name | string | `''` | Attribute name to get the value for. | | options | object | `null` | | -| options.timeout | number | `30000` | Maximum time in milliseconds. Pass `0` to disable the timeout. Default is overridden by the `setDefaultTimeout` option on [BrowserContext](/javascript-api/xk6-browser/api/browsercontext/) or [Page](/javascript-api/xk6-browser/api/page/). | +| options.timeout | number | `30000` | Maximum time in milliseconds. Pass `0` to disable the timeout. Default is overridden by the `setDefaultTimeout` option on [BrowserContext](/javascript-api/k6-browser/api/browsercontext/) or [Page](/javascript-api/k6-browser/api/page/). | diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/hover--options--.md b/src/data/markdown/docs/30 k6-browser/02 API/08 Locator/hover--options--.md similarity index 97% rename from src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/hover--options--.md rename to src/data/markdown/docs/30 k6-browser/02 API/08 Locator/hover--options--.md index 04ed0e6be3..5e25776f48 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/hover--options--.md +++ b/src/data/markdown/docs/30 k6-browser/02 API/08 Locator/hover--options--.md @@ -23,7 +23,7 @@ Hovers over the element. | options.position | object | `null` | A point to use relative to the top left corner of the element. If not supplied, a visible point of the element is used. | | options.position.x | number | `0` | The x coordinate. | | options.position.y | number | `0` | The y coordinate. | -| options.timeout | number | `30000` | Maximum time in milliseconds. Pass `0` to disable the timeout. Default is overridden by the `setDefaultTimeout` option on [BrowserContext](/javascript-api/xk6-browser/api/browsercontext/) or [Page](/javascript-api/xk6-browser/api/page/). | +| options.timeout | number | `30000` | Maximum time in milliseconds. Pass `0` to disable the timeout. Default is overridden by the `setDefaultTimeout` option on [BrowserContext](/javascript-api/k6-browser/api/browsercontext/) or [Page](/javascript-api/k6-browser/api/page/). | | options.trial | boolean | `false` | Setting this to `true` will perform the actionability checks without performing the action. | diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/innerhtml--options--.md b/src/data/markdown/docs/30 k6-browser/02 API/08 Locator/innerhtml--options--.md similarity index 95% rename from src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/innerhtml--options--.md rename to src/data/markdown/docs/30 k6-browser/02 API/08 Locator/innerhtml--options--.md index a2421399b4..8c0aae67aa 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/innerhtml--options--.md +++ b/src/data/markdown/docs/30 k6-browser/02 API/08 Locator/innerhtml--options--.md @@ -10,7 +10,7 @@ Returns the `element.innerHTML`. | Parameter | Type | Default | Description | |-----------------|--------|---------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | options | object | `null` | | -| options.timeout | number | `30000` | Maximum time in milliseconds. Pass `0` to disable the timeout. Default is overridden by the `setDefaultTimeout` option on [BrowserContext](/javascript-api/xk6-browser/api/browsercontext/) or [Page](/javascript-api/xk6-browser/api/page/). | +| options.timeout | number | `30000` | Maximum time in milliseconds. Pass `0` to disable the timeout. Default is overridden by the `setDefaultTimeout` option on [BrowserContext](/javascript-api/k6-browser/api/browsercontext/) or [Page](/javascript-api/k6-browser/api/page/). | diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/innertext--options--.md b/src/data/markdown/docs/30 k6-browser/02 API/08 Locator/innertext--options--.md similarity index 95% rename from src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/innertext--options--.md rename to src/data/markdown/docs/30 k6-browser/02 API/08 Locator/innertext--options--.md index 847d26e7c1..a98130485e 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/innertext--options--.md +++ b/src/data/markdown/docs/30 k6-browser/02 API/08 Locator/innertext--options--.md @@ -10,7 +10,7 @@ Returns the `element.innerText`. | Parameter | Type | Default | Description | |-----------------|--------|---------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | options | object | `null` | | -| options.timeout | number | `30000` | Maximum time in milliseconds. Pass `0` to disable the timeout. Default is overridden by the `setDefaultTimeout` option on [BrowserContext](/javascript-api/xk6-browser/api/browsercontext/) or [Page](/javascript-api/xk6-browser/api/page/). | +| options.timeout | number | `30000` | Maximum time in milliseconds. Pass `0` to disable the timeout. Default is overridden by the `setDefaultTimeout` option on [BrowserContext](/javascript-api/k6-browser/api/browsercontext/) or [Page](/javascript-api/k6-browser/api/page/). | diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/inputvalue--options--.md b/src/data/markdown/docs/30 k6-browser/02 API/08 Locator/inputvalue--options--.md similarity index 95% rename from src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/inputvalue--options--.md rename to src/data/markdown/docs/30 k6-browser/02 API/08 Locator/inputvalue--options--.md index 93f4e4a6fd..a8fb7f4d80 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/inputvalue--options--.md +++ b/src/data/markdown/docs/30 k6-browser/02 API/08 Locator/inputvalue--options--.md @@ -10,7 +10,7 @@ Returns `input.value` for the selected `input`, `textarea` or `select` element. | Parameter | Type | Default | Description | |-----------------|--------|---------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | options | object | `null` | | -| options.timeout | number | `30000` | Maximum time in milliseconds. Pass `0` to disable the timeout. Default is overridden by the `setDefaultTimeout` option on [BrowserContext](/javascript-api/xk6-browser/api/browsercontext/) or [Page](/javascript-api/xk6-browser/api/page/). | +| options.timeout | number | `30000` | Maximum time in milliseconds. Pass `0` to disable the timeout. Default is overridden by the `setDefaultTimeout` option on [BrowserContext](/javascript-api/k6-browser/api/browsercontext/) or [Page](/javascript-api/k6-browser/api/page/). | diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/ischecked--options--.md b/src/data/markdown/docs/30 k6-browser/02 API/08 Locator/ischecked--options--.md similarity index 95% rename from src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/ischecked--options--.md rename to src/data/markdown/docs/30 k6-browser/02 API/08 Locator/ischecked--options--.md index ec2e603216..a45ffb2d96 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/ischecked--options--.md +++ b/src/data/markdown/docs/30 k6-browser/02 API/08 Locator/ischecked--options--.md @@ -10,7 +10,7 @@ Checks to see if the `checkbox` `input` type is selected or not. | Parameter | Type | Default | Description | |-----------------|--------|---------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | options | object | `null` | | -| options.timeout | number | `30000` | Maximum time in milliseconds. Pass `0` to disable the timeout. Default is overridden by the `setDefaultTimeout` option on [BrowserContext](/javascript-api/xk6-browser/api/browsercontext/) or [Page](/javascript-api/xk6-browser/api/page/). | +| options.timeout | number | `30000` | Maximum time in milliseconds. Pass `0` to disable the timeout. Default is overridden by the `setDefaultTimeout` option on [BrowserContext](/javascript-api/k6-browser/api/browsercontext/) or [Page](/javascript-api/k6-browser/api/page/). | diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/isdisabled--options--.md b/src/data/markdown/docs/30 k6-browser/02 API/08 Locator/isdisabled--options--.md similarity index 95% rename from src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/isdisabled--options--.md rename to src/data/markdown/docs/30 k6-browser/02 API/08 Locator/isdisabled--options--.md index d4cbdfed6a..6b9e264a09 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/isdisabled--options--.md +++ b/src/data/markdown/docs/30 k6-browser/02 API/08 Locator/isdisabled--options--.md @@ -10,7 +10,7 @@ Checks if the element is `disabled`. | Parameter | Type | Default | Description | |-----------------|--------|---------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | options | object | `null` | | -| options.timeout | number | `30000` | Maximum time in milliseconds. Pass `0` to disable the timeout. Default is overridden by the `setDefaultTimeout` option on [BrowserContext](/javascript-api/xk6-browser/api/browsercontext/) or [Page](/javascript-api/xk6-browser/api/page/). | +| options.timeout | number | `30000` | Maximum time in milliseconds. Pass `0` to disable the timeout. Default is overridden by the `setDefaultTimeout` option on [BrowserContext](/javascript-api/k6-browser/api/browsercontext/) or [Page](/javascript-api/k6-browser/api/page/). | diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/iseditable--options--.md b/src/data/markdown/docs/30 k6-browser/02 API/08 Locator/iseditable--options--.md similarity index 95% rename from src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/iseditable--options--.md rename to src/data/markdown/docs/30 k6-browser/02 API/08 Locator/iseditable--options--.md index 06b8726770..4e9dc0af5f 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/iseditable--options--.md +++ b/src/data/markdown/docs/30 k6-browser/02 API/08 Locator/iseditable--options--.md @@ -10,7 +10,7 @@ Checks if the element is `editable`. | Parameter | Type | Default | Description | |-----------------|--------|---------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | options | object | `null` | | -| options.timeout | number | `30000` | Maximum time in milliseconds. Pass `0` to disable the timeout. Default is overridden by the `setDefaultTimeout` option on [BrowserContext](/javascript-api/xk6-browser/api/browsercontext/) or [Page](/javascript-api/xk6-browser/api/page/). | +| options.timeout | number | `30000` | Maximum time in milliseconds. Pass `0` to disable the timeout. Default is overridden by the `setDefaultTimeout` option on [BrowserContext](/javascript-api/k6-browser/api/browsercontext/) or [Page](/javascript-api/k6-browser/api/page/). | diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/isenabled--options--.md b/src/data/markdown/docs/30 k6-browser/02 API/08 Locator/isenabled--options--.md similarity index 95% rename from src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/isenabled--options--.md rename to src/data/markdown/docs/30 k6-browser/02 API/08 Locator/isenabled--options--.md index 430671bdf7..b6939dd080 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/isenabled--options--.md +++ b/src/data/markdown/docs/30 k6-browser/02 API/08 Locator/isenabled--options--.md @@ -10,7 +10,7 @@ Checks if the element is `enabled`. | Parameter | Type | Default | Description | |-----------------|--------|---------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | options | object | `null` | | -| options.timeout | number | `30000` | Maximum time in milliseconds. Pass `0` to disable the timeout. Default is overridden by the `setDefaultTimeout` option on [BrowserContext](/javascript-api/xk6-browser/api/browsercontext/) or [Page](/javascript-api/xk6-browser/api/page/). | +| options.timeout | number | `30000` | Maximum time in milliseconds. Pass `0` to disable the timeout. Default is overridden by the `setDefaultTimeout` option on [BrowserContext](/javascript-api/k6-browser/api/browsercontext/) or [Page](/javascript-api/k6-browser/api/page/). | diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/ishidden--options--.md b/src/data/markdown/docs/30 k6-browser/02 API/08 Locator/ishidden--options--.md similarity index 95% rename from src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/ishidden--options--.md rename to src/data/markdown/docs/30 k6-browser/02 API/08 Locator/ishidden--options--.md index 59b022464e..050e81e73f 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/ishidden--options--.md +++ b/src/data/markdown/docs/30 k6-browser/02 API/08 Locator/ishidden--options--.md @@ -10,7 +10,7 @@ Checks if the element is `hidden`. | Parameter | Type | Default | Description | |-----------------|--------|---------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | options | object | `null` | | -| options.timeout | number | `30000` | Maximum time in milliseconds. Pass `0` to disable the timeout. Default is overridden by the `setDefaultTimeout` option on [BrowserContext](/javascript-api/xk6-browser/api/browsercontext/) or [Page](/javascript-api/xk6-browser/api/page/). | +| options.timeout | number | `30000` | Maximum time in milliseconds. Pass `0` to disable the timeout. Default is overridden by the `setDefaultTimeout` option on [BrowserContext](/javascript-api/k6-browser/api/browsercontext/) or [Page](/javascript-api/k6-browser/api/page/). | diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/isvisible--options--.md b/src/data/markdown/docs/30 k6-browser/02 API/08 Locator/isvisible--options--.md similarity index 95% rename from src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/isvisible--options--.md rename to src/data/markdown/docs/30 k6-browser/02 API/08 Locator/isvisible--options--.md index 5fd2847912..1d0f982c39 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/isvisible--options--.md +++ b/src/data/markdown/docs/30 k6-browser/02 API/08 Locator/isvisible--options--.md @@ -10,7 +10,7 @@ Checks if the element is `visible`. | Parameter | Type | Default | Description | |-----------------|--------|---------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | options | object | `null` | | -| options.timeout | number | `30000` | Maximum time in milliseconds. Pass `0` to disable the timeout. Default is overridden by the `setDefaultTimeout` option on [BrowserContext](/javascript-api/xk6-browser/api/browsercontext/) or [Page](/javascript-api/xk6-browser/api/page/). | +| options.timeout | number | `30000` | Maximum time in milliseconds. Pass `0` to disable the timeout. Default is overridden by the `setDefaultTimeout` option on [BrowserContext](/javascript-api/k6-browser/api/browsercontext/) or [Page](/javascript-api/k6-browser/api/page/). | diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/press--options--.md b/src/data/markdown/docs/30 k6-browser/02 API/08 Locator/press--options--.md similarity index 96% rename from src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/press--options--.md rename to src/data/markdown/docs/30 k6-browser/02 API/08 Locator/press--options--.md index d5df580fdd..58864ac9f8 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/press--options--.md +++ b/src/data/markdown/docs/30 k6-browser/02 API/08 Locator/press--options--.md @@ -13,7 +13,7 @@ Press a single key on the keyboard or a combination of keys. | options | object | `null` | | | options.delay | number | `0` | Milliseconds to wait between `keydown` and `keyup`. | | options.noWaitAfter | boolean | `false` | If set to `true` and a navigation occurs from performing this action, it will not wait for it to complete. | -| options.timeout | number | `30000` | Maximum time in milliseconds. Pass `0` to disable the timeout. Default is overridden by the `setDefaultTimeout` option on [BrowserContext](/javascript-api/xk6-browser/api/browsercontext/) or [Page](/javascript-api/xk6-browser/api/page/). | +| options.timeout | number | `30000` | Maximum time in milliseconds. Pass `0` to disable the timeout. Default is overridden by the `setDefaultTimeout` option on [BrowserContext](/javascript-api/k6-browser/api/browsercontext/) or [Page](/javascript-api/k6-browser/api/page/). | diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/selectoption--options--.md b/src/data/markdown/docs/30 k6-browser/02 API/08 Locator/selectoption--options--.md similarity index 96% rename from src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/selectoption--options--.md rename to src/data/markdown/docs/30 k6-browser/02 API/08 Locator/selectoption--options--.md index b82a719532..ffb2b21f8c 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/selectoption--options--.md +++ b/src/data/markdown/docs/30 k6-browser/02 API/08 Locator/selectoption--options--.md @@ -20,7 +20,7 @@ Select one or more options which match the values. | options | object | `null` | | | options.force | boolean | `false` | Setting this to `true` will bypass the actionability checks (`visible`, `stable`, `enabled`). | | options.noWaitAfter | boolean | `false` | If set to `true` and a navigation occurs from performing this action, it will not wait for it to complete. | -| options.timeout | number | `30000` | Maximum time in milliseconds. Pass `0` to disable the timeout. Default is overridden by the `setDefaultTimeout` option on [BrowserContext](/javascript-api/xk6-browser/api/browsercontext/) or [Page](/javascript-api/xk6-browser/api/page/). | +| options.timeout | number | `30000` | Maximum time in milliseconds. Pass `0` to disable the timeout. Default is overridden by the `setDefaultTimeout` option on [BrowserContext](/javascript-api/k6-browser/api/browsercontext/) or [Page](/javascript-api/k6-browser/api/page/). | diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/tap--options--.md b/src/data/markdown/docs/30 k6-browser/02 API/08 Locator/tap--options--.md similarity index 97% rename from src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/tap--options--.md rename to src/data/markdown/docs/30 k6-browser/02 API/08 Locator/tap--options--.md index ef12b9cbe2..15c10ba2c3 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/tap--options--.md +++ b/src/data/markdown/docs/30 k6-browser/02 API/08 Locator/tap--options--.md @@ -23,7 +23,7 @@ Tap on the chosen element. | options.position | object | `null` | A point to use relative to the top left corner of the element. If not supplied, a visible point of the element is used. | | options.position.x | number | `0` | The x coordinate. | | options.position.y | number | `0` | The y coordinate. | -| options.timeout | number | `30000` | Maximum time in milliseconds. Pass `0` to disable the timeout. Default is overridden by the `setDefaultTimeout` option on [BrowserContext](/javascript-api/xk6-browser/api/browsercontext/) or [Page](/javascript-api/xk6-browser/api/page/). | +| options.timeout | number | `30000` | Maximum time in milliseconds. Pass `0` to disable the timeout. Default is overridden by the `setDefaultTimeout` option on [BrowserContext](/javascript-api/k6-browser/api/browsercontext/) or [Page](/javascript-api/k6-browser/api/page/). | | options.trial | boolean | `false` | Setting this to `true` will perform the actionability checks without performing the action. | diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/textcontent--options--.md b/src/data/markdown/docs/30 k6-browser/02 API/08 Locator/textcontent--options--.md similarity index 95% rename from src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/textcontent--options--.md rename to src/data/markdown/docs/30 k6-browser/02 API/08 Locator/textcontent--options--.md index 9634e30dec..eefc07f587 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/textcontent--options--.md +++ b/src/data/markdown/docs/30 k6-browser/02 API/08 Locator/textcontent--options--.md @@ -10,7 +10,7 @@ Returns the `element.textContent`. | Parameter | Type | Default | Description | |-----------------|--------|---------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | options | object | `null` | | -| options.timeout | number | `30000` | Maximum time in milliseconds. Pass `0` to disable the timeout. Default is overridden by the `setDefaultTimeout` option on [BrowserContext](/javascript-api/xk6-browser/api/browsercontext/) or [Page](/javascript-api/xk6-browser/api/page/). | +| options.timeout | number | `30000` | Maximum time in milliseconds. Pass `0` to disable the timeout. Default is overridden by the `setDefaultTimeout` option on [BrowserContext](/javascript-api/k6-browser/api/browsercontext/) or [Page](/javascript-api/k6-browser/api/page/). | diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/type--options--.md b/src/data/markdown/docs/30 k6-browser/02 API/08 Locator/type--options--.md similarity index 96% rename from src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/type--options--.md rename to src/data/markdown/docs/30 k6-browser/02 API/08 Locator/type--options--.md index 0566e4df16..5ca7b47edd 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/type--options--.md +++ b/src/data/markdown/docs/30 k6-browser/02 API/08 Locator/type--options--.md @@ -13,7 +13,7 @@ Type in the text into the input field. | options | object | `null` | | | options.delay | number | `0` | Milliseconds to wait between key presses. Defaults to `0`. | | options.noWaitAfter | boolean | `false` | If set to `true` and a navigation occurs from performing this action, it will not wait for it to complete. | -| options.timeout | number | `30000` | Maximum time in milliseconds. Pass `0` to disable the timeout. Default is overridden by the `setDefaultTimeout` option on [BrowserContext](/javascript-api/xk6-browser/api/browsercontext/) or [Page](/javascript-api/xk6-browser/api/page/). | +| options.timeout | number | `30000` | Maximum time in milliseconds. Pass `0` to disable the timeout. Default is overridden by the `setDefaultTimeout` option on [BrowserContext](/javascript-api/k6-browser/api/browsercontext/) or [Page](/javascript-api/k6-browser/api/page/). | diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/uncheck--options--.md b/src/data/markdown/docs/30 k6-browser/02 API/08 Locator/uncheck--options--.md similarity index 97% rename from src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/uncheck--options--.md rename to src/data/markdown/docs/30 k6-browser/02 API/08 Locator/uncheck--options--.md index 3cdd9e55db..063b1f6d7e 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/uncheck--options--.md +++ b/src/data/markdown/docs/30 k6-browser/02 API/08 Locator/uncheck--options--.md @@ -22,7 +22,7 @@ Unselect the `input` checkbox. | options.position | object | `null` | A point to use relative to the top left corner of the element. If not supplied, a visible point of the element is used. | | options.position.x | number | `0` | The x coordinate. | | options.position.y | number | `0` | The y coordinate. | -| options.timeout | number | `30000` | Maximum time in milliseconds. Pass `0` to disable the timeout. Default is overridden by the `setDefaultTimeout` option on [BrowserContext](/javascript-api/xk6-browser/api/browsercontext/) or [Page](/javascript-api/xk6-browser/api/page/). | +| options.timeout | number | `30000` | Maximum time in milliseconds. Pass `0` to disable the timeout. Default is overridden by the `setDefaultTimeout` option on [BrowserContext](/javascript-api/k6-browser/api/browsercontext/) or [Page](/javascript-api/k6-browser/api/page/). | | options.trial | boolean | `false` | Setting this to `true` will perform the actionability checks without performing the action. | diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/waitfor--options--.md b/src/data/markdown/docs/30 k6-browser/02 API/08 Locator/waitfor--options--.md similarity index 95% rename from src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/waitfor--options--.md rename to src/data/markdown/docs/30 k6-browser/02 API/08 Locator/waitfor--options--.md index 45e945aaa2..e1a953f6dd 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator/waitfor--options--.md +++ b/src/data/markdown/docs/30 k6-browser/02 API/08 Locator/waitfor--options--.md @@ -18,7 +18,7 @@ Wait for the element to be in a particular state e.g. `visible`. |-----------------|--------|-----------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | options | object | `null` | | | options.state | string | `visible` | Can be `attached`, `detached`, `visible` or `hidden`. | -| options.timeout | number | `30000` | Maximum time in milliseconds. Pass `0` to disable the timeout. Default is overridden by the `setDefaultTimeout` option on [BrowserContext](/javascript-api/xk6-browser/api/browsercontext/) or [Page](/javascript-api/xk6-browser/api/page/). | +| options.timeout | number | `30000` | Maximum time in milliseconds. Pass `0` to disable the timeout. Default is overridden by the `setDefaultTimeout` option on [BrowserContext](/javascript-api/k6-browser/api/browsercontext/) or [Page](/javascript-api/k6-browser/api/page/). | diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/09-mouse.md b/src/data/markdown/docs/30 k6-browser/02 API/09-mouse.md similarity index 100% rename from src/data/markdown/docs/30 xk6-browser/02 API/09-mouse.md rename to src/data/markdown/docs/30 k6-browser/02 API/09-mouse.md diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/10-page.md b/src/data/markdown/docs/30 k6-browser/02 API/10-page.md similarity index 96% rename from src/data/markdown/docs/30 xk6-browser/02 API/10-page.md rename to src/data/markdown/docs/30 k6-browser/02 API/10-page.md index b7facc71cd..7b797d5e45 100644 --- a/src/data/markdown/docs/30 xk6-browser/02 API/10-page.md +++ b/src/data/markdown/docs/30 k6-browser/02 API/10-page.md @@ -36,7 +36,7 @@ excerpt: "Browser module: Page Class" | page.isEnabled(selector[, options]) | - | - | | page.isHidden(selector[, options]) | - | - | | page.isVisible(selector[, options]) | - | - | -| [page.locator(selector\[, options\])](/javascript-api/xk6-browser/api/locator) | - | Creates and returns a new page `locator` given a selector with strict mode on. The strict mode only allows selecting a single matching element, and will throw an error if multiple matches are found. | +| [page.locator(selector\[, options\])](/javascript-api/k6-browser/api/locator) | - | Creates and returns a new page `locator` given a selector with strict mode on. The strict mode only allows selecting a single matching element, and will throw an error if multiple matches are found. | | page.mainFrame() | - | - | | page.opener() | - | - | | page.press(selector, key[, options]) | - | - | diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/11-request.md b/src/data/markdown/docs/30 k6-browser/02 API/11-request.md similarity index 100% rename from src/data/markdown/docs/30 xk6-browser/02 API/11-request.md rename to src/data/markdown/docs/30 k6-browser/02 API/11-request.md diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/12-response.md b/src/data/markdown/docs/30 k6-browser/02 API/12-response.md similarity index 100% rename from src/data/markdown/docs/30 xk6-browser/02 API/12-response.md rename to src/data/markdown/docs/30 k6-browser/02 API/12-response.md diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/13-touchscreen.md b/src/data/markdown/docs/30 k6-browser/02 API/13-touchscreen.md similarity index 100% rename from src/data/markdown/docs/30 xk6-browser/02 API/13-touchscreen.md rename to src/data/markdown/docs/30 k6-browser/02 API/13-touchscreen.md diff --git a/src/data/markdown/docs/30 xk6-browser/01 Get started.md b/src/data/markdown/docs/30 xk6-browser/01 Get started.md deleted file mode 100644 index 7c38ac0f65..0000000000 --- a/src/data/markdown/docs/30 xk6-browser/01 Get started.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: 'Get started' -excerpt: '' ---- - -[Welcome](/javascript-api/xk6-browser/) - -[Running browser tests](/javascript-api/xk6-browser/get-started/running-browser-tests/) - -[Browser metrics](/javascript-api/xk6-browser/get-started/browser-metrics/) - -[Selecting elements](/javascript-api/xk6-browser/get-started/selecting-elements/) diff --git a/src/data/markdown/docs/30 xk6-browser/02 API.md b/src/data/markdown/docs/30 xk6-browser/02 API.md deleted file mode 100644 index 5e480547cb..0000000000 --- a/src/data/markdown/docs/30 xk6-browser/02 API.md +++ /dev/null @@ -1,62 +0,0 @@ ---- -title: 'API' -excerpt: 'An overview of the browser-level APIs from browser module.' ---- - -The browser module APIs aim for rough compatibility with the [Playwright API for NodeJS](https://playwright.dev/docs/api/class-playwright). - -Note that because k6 does not run in NodeJS, the browser module APIs will slightly differ from their Playwright counterparts. - -## Modules - -The table below lists the importable properties from the top level module (`'k6/experimental/browser'`). - -| Property | Description | -|----------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| chromium | A [BrowserType](/javascript-api/xk6-browser/api/browsertype) to launch tests in a Chromium-based browser. | -| devices | Returns predefined emulation settings for many end-user devices that can be used to simulate browser behavior on a mobile device. See the [devices example](#devices-example) below. | -| version | Returns the version number of xk6-browser. | - -### Devices Example - -To emulate the browser behaviour on a mobile device and approximately measure the browser performance, you can import `devices` from `k6/experimental/browser`. - - - -```javascript -import { chromium, devices } from 'k6/experimental/browser'; - -export default async function () { - const browser = chromium.launch({ headless: false }); - const iphoneX = devices['iPhone X']; - const context = browser.newContext(iphoneX); - const page = context.newPage(); - - try { - await page.goto('https://test.k6.io/', { waitUntil: 'networkidle' }) - } finally { - page.close(); - browser.close(); - } -} -``` - - - -## Browser-level APIs - -| k6 Class | Description | -|-------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------| -| [Browser](/javascript-api/xk6-browser/api/browser/) | The entry point for all tests and used to launch [BrowserContext](/javascript-api/xk6-browser/api/browsercontext/)s and [Page](/javascript-api/xk6-browser/api/page/)s. | -| [BrowserContext](/javascript-api/xk6-browser/api/browsercontext/) | Enables independent browser sessions with separate [Page](/javascript-api/xk6-browser/api/page/)s, cache, and cookies. | -| [BrowserType](/javascript-api/xk6-browser/api/browsertype/) | The `BrowserType` is the entry point into launching a browser process; `chromium` is currently the only supported `BrowserType`. | -| [ElementHandle](/javascript-api/xk6-browser/api/elementhandle/) | Represents an in-page DOM element. | -| [Frame](/javascript-api/xk6-browser/api/frame/) | Access and interact with the [`Page`](/javascript-api/xk6-browser/api/page/).'s `Frame`s. | -| [JSHandle](/javascript-api/xk6-browser/api/jshandle) | Represents an in-page JavaScript object. | -| [Keyboard](/javascript-api/xk6-browser/api/keyboard/) | Used to simulate the keyboard interactions with the associated [`Page`](/javascript-api/xk6-browser/api/page/). | -| [Locator](/javascript-api/xk6-browser/api/locator/) | The Locator API makes it easier to work with dynamically changing elements. | -| [Mouse](/javascript-api/xk6-browser/api/mouse/) | Used to simulate the mouse interactions with the associated [`Page`](/javascript-api/xk6-browser/api/page/). | -| [Page](/javascript-api/xk6-browser/api/page/) | Provides methods to interact with a single tab in a [`Browser`](/javascript-api/xk6-browser/api/browser/). | -| [Request](/javascript-api/xk6-browser/api/request/) | Used to keep track of the request the [`Page`](/javascript-api/xk6-browser/api/page/) makes. | -| [Response](/javascript-api/xk6-browser/api/response/) | Represents the response received by the [`Page`](/javascript-api/xk6-browser/api/page/). | -| [Touchscreen](/javascript-api/xk6-browser/api/touchscreen/) | Used to simulate touch interactions with the associated [`Page`](/javascript-api/xk6-browser/api/page/). | diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser.md b/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser.md deleted file mode 100644 index c07c8f5a29..0000000000 --- a/src/data/markdown/docs/30 xk6-browser/02 API/01 Browser.md +++ /dev/null @@ -1,43 +0,0 @@ ---- -title: "Browser" -excerpt: "Browser module: Browser Class" ---- - -The `Browser` class is the entry point for all your tests, and it is what interacts with the actual web browser via [Chrome DevTools Protocol](https://chromedevtools.github.io/devtools-protocol/) (CDP). It manages: -- [BrowserContext](/javascript-api/xk6-browser/api/browsercontext/) which is where you can set a variety of attributes to control the behavior of pages; -- and [Page](/javascript-api/xk6-browser/api/page/) which is where your rendered site is displayed. - -A new Browser instance (hence a new browser process) can be created using the `launch()` method of the `chromium` module from `'k6/experimental/browser'`. - -| Method | Description | -|-------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------| -| [browser.close()](/javascript-api/xk6-browser/api/browser/close) | Closes the browser and all of its pages (if any were opened). | -| [browser.contexts()](/javascript-api/xk6-browser/api/browser/contexts) | Lets you access all open [BrowserContext](/javascript-api/xk6-browser/api/browsercontext/)s. | -| [browser.isConnected](/javascript-api/xk6-browser/api/browser/isconnected) | Indicates whether the [CDP](https://chromedevtools.github.io/devtools-protocol/) connection to the browser process is active or not. | -| [browser.newContext([options])](/javascript-api/xk6-browser/api/browser/newcontext/) | Creates and returns a new [BrowserContext](/javascript-api/xk6-browser/api/browsercontext/). | -| [browser.newPage([options])](/javascript-api/xk6-browser/api/browser/newpage) | Creates a new [Page](/javascript-api/xk6-browser/api/page/) in a new [BrowserContext](/javascript-api/xk6-browser/api/browsercontext/) and returns the page. | -| [browser.on('disconnected')](/javascript-api/xk6-browser/api/browser/on) | Detects the disconnected event from the browser application. | -| [browser.version()](/javascript-api/xk6-browser/api/browser/version) | Returns the browser application's version. | - -### Example - - - -```javascript -import { chromium } from 'k6/experimental/browser'; - -export default async function () { - const browser = chromium.launch(); - const context = browser.newContext(); - const page = context.newPage(); - - try { - await page.goto('https://test.k6.io/', { waitUntil: 'networkidle' }); - } finally { - page.close(); - browser.close(); - } -} -``` - - diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext.md b/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext.md deleted file mode 100644 index f646fa98c0..0000000000 --- a/src/data/markdown/docs/30 xk6-browser/02 API/02 BrowserContext.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: "BrowserContext" -excerpt: "Browser module: BrowserContext Class" ---- - -`BrowserContext`s provide a way to operate multiple independent sessions, with separate pages, cache, and cookies. A default `BrowserContext` is created when a [Browser](/javascript-api/xk6-browser/api/browser) is launched. - -The [Browser](/javascript-api/xk6-browser/api/browser) type is used to create a new `BrowserContext`. - -If a [page](/javascript-api/xk6-browser/api/page) opens another page, e.g. with a `window.open` call, the popup will belong to the parent page's `BrowserContext`. - - -| Method | Description | -|-------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------| -| [BrowserContext.browser()](/javascript-api/xk6-browser/api/browsercontext/browser/) | Returns the [Browser](/javascript-api/xk6-browser/api/browser) instance that this `BrowserContext` belongs to. | -| [BrowserContext.clearCookies()](/javascript-api/xk6-browser/api/browsercontext/clearcookies/) | Clear the `BrowserContext`'s cookies. | -| [BrowserContext.clearPermissions()](/javascript-api/xk6-browser/api/browsercontext/clearpermissions) | Clears all permission overrides for the `BrowserContext`. | -| [BrowserContext.close()](/javascript-api/xk6-browser/api/browsercontext/close) | Close the `BrowserContext` and all its [page](/javascript-api/xk6-browser/api/page)s. | -| [BrowserContext.grantPermissions(permissions[, options])](/javascript-api/xk6-browser/api/browsercontext/grantpermissions) | Grants specified permissions to the `BrowserContext`. | -| [BrowserContext.newPage()](/javascript-api/xk6-browser/api/browsercontext/newpage) | Uses the `BrowserContext` to create a new [Page](/javascript-api/xk6-browser/api/page/) and returns it. | -| [BrowserContext.pages()](/javascript-api/xk6-browser/api/browsercontext/pages) | Returns a list of [page](/javascript-api/xk6-browser/api/page)s that belongs to the `BrowserContext`. | -| [BrowserContext.setDefaultNavigationTimeout(timeout)](/javascript-api/xk6-browser/api/browsercontext/setdefaultnavigationtimeout) | Sets the default navigation timeout in milliseconds. | -| [BrowserContext.setDefaultTimeout(timeout)](/javascript-api/xk6-browser/api/browsercontext/setdefaulttimeout) | Sets the default maximum timeout for all methods accepting a timeout option in milliseconds. | -| [BrowserContext.setGeolocation(geolocation)](/javascript-api/xk6-browser/api/browsercontext/setgeolocation) | Sets the `BrowserContext`'s geolocation. | -| [BrowserContext.setOffline(offline)](/javascript-api/xk6-browser/api/browsercontext/setoffline) | Toggles the `BrowserContext`'s connectivity on/off. | -| [BrowserContext.waitForEvent(event[, optionsOrPredicate])](/javascript-api/xk6-browser/api/browsercontext/waitforevent) | Waits for the event to fire and passes its value into the predicate function. | diff --git a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator.md b/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator.md deleted file mode 100644 index d6b7b4011e..0000000000 --- a/src/data/markdown/docs/30 xk6-browser/02 API/08 Locator.md +++ /dev/null @@ -1,111 +0,0 @@ ---- -title: "Locator" -excerpt: "Browser module: Locator Class" ---- - -The Locator API makes it easier to work with dynamically changing elements. Some of the benefits of using it over existing ways to locate an element (e.g. `Page.$()`) include: - -- Helps with writing robust tests by finding an element even if the underlying frame navigates. -- Makes it easier to work with dynamic web pages and SPAs built with Svelte, React, Vue, etc. -- Enables the use of test abstractions like the Page Object Model (POM) pattern to simplify and organize tests. -- `strict` mode is enabled for all `locator` methods, which means that if more than one element matches the given selector it will throw an error. - -Locator can be created with the [page.locator(selector[, options])](/javascript-api/xk6-browser/api/page/#page-locator) method. - -| Method | Description | -|---------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------| -| [locator.check([options])](/javascript-api/xk6-browser/api/locator/check) | Select the input checkbox. | -| [locator.click([options])](/javascript-api/xk6-browser/api/locator/click) | Mouse click on the chosen element. | -| [locator.dblclick([options])](/javascript-api/xk6-browser/api/locator/dblclick) | Mouse double click on the chosen element. | -| [locator.dispatchEvent(type, eventInit, [options])](/javascript-api/xk6-browser/api/locator/dispatchevent) | Dispatches HTML DOM event types e.g. `'click'`. | -| [locator.fill(value, [options])](/javascript-api/xk6-browser/api/locator/fill) | Fill an `input`, `textarea` or `contenteditable` element with the provided value. | -| [locator.focus([options])](/javascript-api/xk6-browser/api/locator/focus) | Calls [focus](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/focus) on the element, if it can be focused. | -| [locator.getAttribute(name, [options])](/javascript-api/xk6-browser/api/locator/getattribute) | Returns the element attribute value for the given attribute name. | -| [locator.hover([options])](/javascript-api/xk6-browser/api/locator/hover) | Hovers over the element. | -| [locator.innerHTML([options])](/javascript-api/xk6-browser/api/locator/innerhtml) | Returns the `element.innerHTML`. | -| [locator.innerText([options])](/javascript-api/xk6-browser/api/locator/innertext) | Returns the `element.innerText`. | -| [locator.inputValue([options])](/javascript-api/xk6-browser/api/locator/inputvalue) | Returns `input.value` for the selected `input`, `textarea` or `select` element. | -| [locator.isChecked([options])](/javascript-api/xk6-browser/api/locator/ischecked) | Checks if the `checkbox` `input` type is selected. | -| [locator.isDisabled([options])](/javascript-api/xk6-browser/api/locator/isdisabled) | Checks if the element is `disabled`. | -| [locator.isEditable([options])](/javascript-api/xk6-browser/api/locator/iseditable) | Checks if the element is `editable`. | -| [locator.isEnabled([options])](/javascript-api/xk6-browser/api/locator/isenabled) | Checks if the element is `enabled`. | -| [locator.isHidden([options])](/javascript-api/xk6-browser/api/locator/ishidden) | Checks if the element is `hidden`. | -| [locator.isVisible([options])](/javascript-api/xk6-browser/api/locator/isvisible) | Checks if the element is `visible`. | -| [locator.press(key, [options])](/javascript-api/xk6-browser/api/locator/press) | Press a single key on the keyboard or a combination of keys. | -| [locator.selectOption(values, [options])](/javascript-api/xk6-browser/api/locator/selectoption) | Select one or more options which match the values. | -| [locator.tap([options])](/javascript-api/xk6-browser/api/locator/tap) | Tap on the chosen element. | -| [locator.textContent([options])](/javascript-api/xk6-browser/api/locator/textcontent) | Returns the `element.textContent`. | -| [locator.type(text, [options])](/javascript-api/xk6-browser/api/locator/type) | Type in the text into the input field. | -| [locator.uncheck([options])](/javascript-api/xk6-browser/api/locator/uncheck) | Unselect the `input` checkbox. | -| [locator.waitFor([options])](/javascript-api/xk6-browser/api/locator/waitfor) | Wait for the element to be in a particular state e.g. `visible`. | - -### Example - - - -```javascript -import { chromium } from 'k6/experimental/browser'; - -export default async function () { - const browser = chromium.launch({ - headless: false, - }); - const context = browser.newContext(); - const page = context.newPage(); - - try { - await page.goto("https://test.k6.io/flip_coin.php", { - waitUntil: "networkidle", - }) - - /* - In this example, we will use two locators, matching a - different betting button on the page. If you were to query - the buttons once and save them as below, you would see an - error after the initial navigation. Try it! - - const heads = page.$("input[value='Bet on heads!']"); - const tails = page.$("input[value='Bet on tails!']"); - - The Locator API allows you to get a fresh element handle each - time you use one of the locator methods. And, you can carry a - locator across frame navigations. Let's create two locators; - each locates a button on the page. - */ - const heads = page.locator("input[value='Bet on heads!']"); - const tails = page.locator("input[value='Bet on tails!']"); - - const currentBet = page.locator("//p[starts-with(text(),'Your bet: ')]"); - - // In the following Promise.all the tails locator clicks - // on the tails button by using the locator's selector. - // Since clicking on each button causes page navigation, - // waitForNavigation is needed -- this is because the page - // won't be ready until the navigation completes. - // Setting up the waitForNavigation first before the click - // is important to avoid race conditions. - await Promise.all([ - page.waitForNavigation(), - tails.click(), - ]); - console.log(currentBet.innerText()); - // the heads locator clicks on the heads button - // by using the locator's selector. - await Promise.all([ - page.waitForNavigation(), - heads.click(), - ]); - console.log(currentBet.innerText()); - await Promise.all([ - page.waitForNavigation(), - tails.click(), - ]); - console.log(currentBet.innerText()); - } finally { - page.close(); - browser.close(); - } -} -``` - - diff --git a/src/data/markdown/translated-guides/en/06 Testing Guides/03 Load testing websites.md b/src/data/markdown/translated-guides/en/06 Testing Guides/03 Load testing websites.md index 91aa312692..127d0883d7 100644 --- a/src/data/markdown/translated-guides/en/06 Testing Guides/03 Load testing websites.md +++ b/src/data/markdown/translated-guides/en/06 Testing Guides/03 Load testing websites.md @@ -172,11 +172,11 @@ For example, a browser-based load testing script might include instructions to n Unlike protocol-based load testing, browser-based load testing scripts generate load by starting multiple instances of browsers and interacting with your application the way real users would. Testing at the browser level can also be the only option for testing Single-Page Applications where a lot of the application logic is executed by client-side scripts. Scripting on the browser level usually requires the use of different tools from the ones used to test at the protocol level. -However, k6 has an extension called [xk6-browser](https://k6.io/docs/javascript-api/xk6-browser/) that allows the creation of browser-based test scripts alongside protocol-based ones. +However, k6 now has an experimental module called [k6 browser](https://k6.io/docs/javascript-api/k6-browser/) that allows the creation of browser-based test scripts alongside protocol-based ones. #### Sample browser-based test script -The following is an example of a browser-based load testing script in k6 using xk6-browser on a dummy website. Instead of making an HTTP request, the script views the homepage, then looks for and clicks on a link to the product page. +The following is an example of a browser-based load testing script in k6 using the browser module on a dummy website. Instead of making an HTTP request, the script views the homepage, then looks for and clicks on a link to the product page. @@ -226,9 +226,9 @@ The following steps can help you get started with a browser-level test script. **Identify unique selectors.** Once you have identified which page elements a user interacts with, use the Element Inspector for DevTools in your browser to find a unique, static, and simple way to identify each element. The script needs selectors to find the right element to interact with. -**Use elements to verify responses.** After every action, use [locators](https://k6.io/docs/javascript-api/xk6-browser/api/locator/) to search for elements on the page that you would expect to find. This verification helps ensure that the script has reached the expected page. +**Use elements to verify responses.** After every action, use [locators](https://k6.io/docs/javascript-api/k6-browser/api/locator/) to search for elements on the page that you would expect to find. This verification helps ensure that the script has reached the expected page. -**Take screenshots for every action while debugging.** One of the advantages of browser-based testing is the ability to take screenshots. After every user interaction the script simulates, use [page.screenshot](https://k6.io/docs/javascript-api/xk6-browser/api/page/) to save a visual image of what the script encountered for later troubleshooting. +**Take screenshots for every action while debugging.** One of the advantages of browser-based testing is the ability to take screenshots. After every user interaction the script simulates, use [page.screenshot](https://k6.io/docs/javascript-api/k6-browser/api/page/) to save a visual image of what the script encountered for later troubleshooting. ### Hybrid load testing @@ -332,7 +332,7 @@ Load testing websites can be complex due to the number of viable testing approac ## Read more -- [Browser testing with xk6-browser](https://k6.io/docs/javascript-api/xk6-browser/) +- [Browser testing with k6 browser](https://k6.io/docs/javascript-api/k6-browser/) - [Test types](https://k6.io/docs/test-types/introduction) - [Session recording guide](https://k6.io/docs/test-authoring/recording-a-session) - [Determining concurrent users in your load tests](https://k6.io/blog/monthly-visits-concurrent-users) diff --git a/src/i18n/guides-translations.js b/src/i18n/guides-translations.js index e3b0155862..dcaa12035b 100644 --- a/src/i18n/guides-translations.js +++ b/src/i18n/guides-translations.js @@ -68,7 +68,7 @@ export const localizedMessages = { 'welcome.k6-does-not.browser.title': 'Does not run natively in a browser', 'welcome.k6-does-not.browser.description': `By default, k6 does not render web pages the same way a browser does. Browsers can consume significant system resources. Skipping the browser allows running more load within a single machine.`, 'welcome.k6-does-not.browser.testing.text': 'However, with', - 'welcome.k6-does-not.browser.testing.link': 'xk6-browser', + 'welcome.k6-does-not.browser.testing.link': 'k6 browser', 'welcome.k6-does-not.browser.testing.text2': 'you can interact with real browsers and collect frontend metrics as part of your k6 tests', 'welcome.k6-does-not.browser.recorded-session.link': @@ -151,7 +151,7 @@ export const localizedMessages = { 'No ejecuta nativamente en un navegador', 'welcome.k6-does-not.browser.description': `Por defecto, k6 no renderiza las páginas web de la misma manera que lo hace un navegado. Los navegadores pueden consumir muchos recursos del sistema. No usando el navegador, nos permite ejecutar tests de más carga en una misma máquina.`, 'welcome.k6-does-not.browser.testing.text': 'Sin embargo, con', - 'welcome.k6-does-not.browser.testing.link': 'xk6-browser', + 'welcome.k6-does-not.browser.testing.link': 'k6 browser', 'welcome.k6-does-not.browser.testing.text2': 'puedes interactuar con navegadores reales y monitorizar métricas del frontend en tus tests de k6', 'welcome.k6-does-not.nodejs.title': 'No se ejecuta en NodeJS', diff --git a/src/layouts/doc-layout/doc-layout.view.js b/src/layouts/doc-layout/doc-layout.view.js index 162970bd1f..19adadc828 100644 --- a/src/layouts/doc-layout/doc-layout.view.js +++ b/src/layouts/doc-layout/doc-layout.view.js @@ -129,7 +129,7 @@ const SidebarNode = (props) => { meta.path === '/es/' || meta.path === '/extensions/' || meta.path === '/javascript-api/xk6-disruptor/' || - meta.path === '/javascript-api/xk6-browser/' + meta.path === '/javascript-api/k6-browser/' ? false : pathname.startsWith(maybePrefixedPath); diff --git a/src/utils/algolia.js b/src/utils/algolia.js index 6e27e270f2..2669124cdd 100644 --- a/src/utils/algolia.js +++ b/src/utils/algolia.js @@ -72,7 +72,7 @@ const processMdxEntry = ( slug = getTranslatedSlug(strippedDirectory, title, pageLocale, 'guides'); } - if (slug.startsWith('/xk6-disruptor') || slug.startsWith('/xk6-browser')) { + if (slug.startsWith('/xk6-disruptor') || slug.startsWith('/k6-browser')) { slug = `/javascript-api${slug}`; } diff --git a/src/utils/utils.node.js b/src/utils/utils.node.js index 843a3666fb..1a489d34d1 100644 --- a/src/utils/utils.node.js +++ b/src/utils/utils.node.js @@ -284,7 +284,7 @@ const dedupePath = (path) => Array.from(new Set(path.split('/'))).join('/'); const redirectWelcome = (path) => path .replace(/en\/get-started\/welcome/i, '') - .replace(/javascript-api\/xk6-browser\/get-started\/welcome/i, '') + .replace(/javascript-api\/k6-browser\/get-started\/welcome/i, '') .replace(/javascript-api\/xk6-disruptor\/get-started\/welcome/i, '') .replace(/empezando\/bienvenido/i, ''); @@ -328,7 +328,7 @@ function removeParametersFromJavaScriptAPISlug(slug, title) { // Making sure to change slug only for Javascript API docs that have parameters if ( - /javascript-api\/|jslib\/|xk6-browser\/|xk6-disruptor\//.test(slug) && + /javascript-api\/|jslib\/|k6-browser\/|xk6-disruptor\//.test(slug) && /\(.+\)/.test(title) ) { const methodName = title.split('(')[0].toLowerCase().replace('.', '-'); From eaccc15b38c5967b02ab3a93bb544d793d07f7ee Mon Sep 17 00:00:00 2001 From: mdcruz Date: Thu, 9 Feb 2023 11:53:46 +0000 Subject: [PATCH 09/15] update K6_BROWSER_ENABLED value to true --- .../01 Get started/02 Running browser tests.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/data/markdown/docs/30 k6-browser/01 Get started/02 Running browser tests.md b/src/data/markdown/docs/30 k6-browser/01 Get started/02 Running browser tests.md index bc0df93aeb..0ed79849a3 100644 --- a/src/data/markdown/docs/30 k6-browser/01 Get started/02 Running browser tests.md +++ b/src/data/markdown/docs/30 k6-browser/01 Get started/02 Running browser tests.md @@ -44,7 +44,7 @@ To run a simple local script: - The preceding code imports the `chromium` [BrowserType](/javascript-api/xk6-browser/api/browsertype) (currently the only available `BrowserType` implementation), and uses its `launch` method to start up a Chromium [Browser](/javascript-api/xk6-browser/api/browser) process. After it starts, you can interact with it using the [browser-level APIs](/javascript-api/xk6-browser/api/#browser-level-apis). This example visits a test URL, waits until the network is idle and takes a screenshot of the page. Afterwards, it closes the page and the browser. + The preceding code imports the `chromium` [BrowserType](/javascript-api/k6-browser/api/browsertype) (currently the only available `BrowserType` implementation), and uses its `launch` method to start up a Chromium [Browser](/javascript-api/k6-browser/api/browser) process. After it starts, you can interact with it using the [browser-level APIs](/javascript-api/k6-browser/api/#browser-level-apis). This example visits a test URL, waits until the network is idle and takes a screenshot of the page. Afterwards, it closes the page and the browser.
@@ -57,20 +57,20 @@ To run a simple local script: ```bash - $ K6_BROWSER_ENABLED=1 k6 run script.js + $ K6_BROWSER_ENABLED=true k6 run script.js ``` ## Interact with elements on your webpage -You can use `page.locator()` and pass in the element's selector you want to find on the page. `page.locator()` will create and return a [Locator](/javascript-api/xk6-browser/api/locator/) object, which you can later use to interact with the element. +You can use `page.locator()` and pass in the element's selector you want to find on the page. `page.locator()` will create and return a [Locator](/javascript-api/k6-browser/api/locator/) object, which you can later use to interact with the element. -To find out which selectors the browser module supports, check out [Selecting Elements](/javascript-api/xk6-browser/get-started/selecting-elements/). +To find out which selectors the browser module supports, check out [Selecting Elements](/javascript-api/k6-browser/get-started/selecting-elements/).
-You can also use `page.$()` instead of `page.locator()`. You can find the differences between `page.locator()` and `page.$` in the [Locator API documentation](/javascript-api/xk6-browser/api/locator/). +You can also use `page.$()` instead of `page.locator()`. You can find the differences between `page.locator()` and `page.$` in the [Locator API documentation](/javascript-api/k6-browser/api/locator/).
From b048e87f7c3230ed581a092d143ea1c5da2866f2 Mon Sep 17 00:00:00 2001 From: Marie Cruz Date: Fri, 10 Feb 2023 18:02:18 +0000 Subject: [PATCH 10/15] Update src/data/markdown/docs/30 k6-browser/02 API/02 BrowserContext/setDefaultTimeout.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: İnanç Gümüş --- .../02 API/02 BrowserContext/setDefaultTimeout.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/data/markdown/docs/30 k6-browser/02 API/02 BrowserContext/setDefaultTimeout.md b/src/data/markdown/docs/30 k6-browser/02 API/02 BrowserContext/setDefaultTimeout.md index ff22a4c1b6..8672c76cac 100644 --- a/src/data/markdown/docs/30 k6-browser/02 API/02 BrowserContext/setDefaultTimeout.md +++ b/src/data/markdown/docs/30 k6-browser/02 API/02 BrowserContext/setDefaultTimeout.md @@ -24,12 +24,12 @@ Sets the default maximum timeout for all methods accepting a `timeout` option in ```javascript import { chromium } from 'k6/experimental/browser'; -export default function () { +export default async function () { const browser = chromium.launch(); const context = browser.newContext(); context.setDefaultTimeout(1000); // 1s const page = context.newPage(); - page.click('h2'); // times out + await page.click('h2'); // times out } ``` From 6e51a2ab61f3795e63c00f0ebb15a392d192d2c4 Mon Sep 17 00:00:00 2001 From: mdcruz Date: Thu, 9 Feb 2023 14:14:01 +0000 Subject: [PATCH 11/15] update docker run command --- .../30 k6-browser/01 Get started/02 Running browser tests.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/data/markdown/docs/30 k6-browser/01 Get started/02 Running browser tests.md b/src/data/markdown/docs/30 k6-browser/01 Get started/02 Running browser tests.md index 0ed79849a3..a097fd5715 100644 --- a/src/data/markdown/docs/30 k6-browser/01 Get started/02 Running browser tests.md +++ b/src/data/markdown/docs/30 k6-browser/01 Get started/02 Running browser tests.md @@ -231,7 +231,7 @@ To run the test, use the following command and replace `script.js` with your fil ```bash -docker-compose run -T K6_BROWSER_ENABLED=1 k6 run - \ No newline at end of file From 10ebe6b45017265b7c2e558874e18925fe4f33b7 Mon Sep 17 00:00:00 2001 From: mdcruz Date: Fri, 10 Feb 2023 18:16:31 +0000 Subject: [PATCH 12/15] changes as per review comments --- .../01 Get started/02 Running browser tests.md | 17 +---------------- .../02 API/08 Locator/textcontent--options--.md | 13 ++++++------- 2 files changed, 7 insertions(+), 23 deletions(-) diff --git a/src/data/markdown/docs/30 k6-browser/01 Get started/02 Running browser tests.md b/src/data/markdown/docs/30 k6-browser/01 Get started/02 Running browser tests.md index a097fd5715..c04abbed4f 100644 --- a/src/data/markdown/docs/30 k6-browser/01 Get started/02 Running browser tests.md +++ b/src/data/markdown/docs/30 k6-browser/01 Get started/02 Running browser tests.md @@ -9,7 +9,6 @@ Follow along to learn how to: 2. Interact with elements on your webpage 3. Wait for page navigation 4. Run both browser-level and protocol-level tests in a single script -5. Run browser tests in a Docker container
@@ -220,18 +219,4 @@ export function news() { The preceding code contains two scenarios. One for the browser-level test called `browser` and one for the protocol-level test called `news`. Both scenarios are using the [constant-vus executor](/using-k6/scenarios/executors/constant-vus/) which introduces a constant number of virtual users to execute as many iterations as possible for a specified amount of time. -Since it's all in one script, this allows for greater collaboration amongst teams. - -## Run browser tests in a Docker container - -If you prefer working with Docker, you can run your browser test scripts in a Docker container using Docker Compose by creating a [Dockerfile](https://github.com/grafana/xk6-browser/blob/main/Dockerfile) and [docker-compose](https://github.com/grafana/xk6-browser/blob/main/docker-compose.yaml) file. - -To run the test, use the following command and replace `script.js` with your file. - - - -```bash -docker-compose run -T K6_BROWSER_ENABLED=true k6 run - \ No newline at end of file +Since it's all in one script, this allows for greater collaboration amongst teams. \ No newline at end of file diff --git a/src/data/markdown/docs/30 k6-browser/02 API/08 Locator/textcontent--options--.md b/src/data/markdown/docs/30 k6-browser/02 API/08 Locator/textcontent--options--.md index eefc07f587..e53f3c8f20 100644 --- a/src/data/markdown/docs/30 k6-browser/02 API/08 Locator/textcontent--options--.md +++ b/src/data/markdown/docs/30 k6-browser/02 API/08 Locator/textcontent--options--.md @@ -33,13 +33,12 @@ export default async function () { await page.goto('https://test.k6.io/browser.php'); const options = page.locator("#checkbox1"); - console.log(options.textContent()); /* Zero - One - Two - Three - Four - Five - */ + console.log(options.textContent()); /* Zero + One + Two + Three + Four + Five */ } ``` From e476ba38554373a67691c12545ced2e754085985 Mon Sep 17 00:00:00 2001 From: mdcruz Date: Fri, 10 Feb 2023 18:26:11 +0000 Subject: [PATCH 13/15] add redirect from xk6-browser to k6-browser --- gatsby-node.js | 1 + 1 file changed, 1 insertion(+) diff --git a/gatsby-node.js b/gatsby-node.js index 68aa31ddde..d0a654dd52 100644 --- a/gatsby-node.js +++ b/gatsby-node.js @@ -1723,6 +1723,7 @@ const createRedirects = ({ actions }) => { '/misc/usage-reports': '/misc/usage-collection/', '/using-k6/using-node-modules': '/using-k6/modules/', '/javascript-api/k6-x-browser/': '/javascript-api/k6-browser/', + '/javascript-api/xk6-browser/': '/javascript-api/k6-browser/', '/javascript-api/k6-x-browser/browser/': '/javascript-api/k6-browser/api/browser/', '/javascript-api/k6-browser/browser/': From 78a0003e867418fe5a11fb3e9e8ced47e67f1813 Mon Sep 17 00:00:00 2001 From: mdcruz Date: Mon, 20 Feb 2023 10:21:16 +0000 Subject: [PATCH 14/15] rename k6-browser to k6 browser --- gatsby-node.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gatsby-node.js b/gatsby-node.js index d0a654dd52..5322ff2905 100644 --- a/gatsby-node.js +++ b/gatsby-node.js @@ -729,7 +729,7 @@ function getDocPagesProps({ breadcrumbs = breadcrumbs.map((item) => ({ ...item, - name: item.name === 'K6-browser' ? 'k6-browser' : item.name, + name: item.name === 'K6-browser' ? 'k6 browser' : item.name, path: item.path.replace('/k6-browser', '/javascript-api/k6-browser'), })); } From b76fb7b81fe94f3e7417267f33e3e788a298522c Mon Sep 17 00:00:00 2001 From: mdcruz Date: Mon, 20 Feb 2023 10:36:11 +0000 Subject: [PATCH 15/15] fix lint errors --- .../markdown/docs/30 k6-browser/01 Get started/01 Welcome.md | 2 +- .../30 k6-browser/01 Get started/02 Running browser tests.md | 2 +- .../40 xk6-disruptor/03 API/02 PodDisruptor/01 Constructor.md | 2 +- .../en/02 Using k6/05 k6 Options/02 Reference.md | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/data/markdown/docs/30 k6-browser/01 Get started/01 Welcome.md b/src/data/markdown/docs/30 k6-browser/01 Get started/01 Welcome.md index 7cd457ff15..54b3338abc 100644 --- a/src/data/markdown/docs/30 k6-browser/01 Get started/01 Welcome.md +++ b/src/data/markdown/docs/30 k6-browser/01 Get started/01 Welcome.md @@ -125,4 +125,4 @@ default ✓ [===============================] 1 VUs 00m01.9s/10m0s 1/1 iters, -This gives you a representation of browser performance as well as the usual HTTP specific metrics that k6 already tracks which allows you to have a full picture on how your application behaves from a frontend and backend perspective, all in a single script. +This gives you a representation of browser performance as well as the usual HTTP specific metrics that k6 already tracks which lets you have a full picture on how your application behaves from a frontend and backend perspective, all in a single script. diff --git a/src/data/markdown/docs/30 k6-browser/01 Get started/02 Running browser tests.md b/src/data/markdown/docs/30 k6-browser/01 Get started/02 Running browser tests.md index c04abbed4f..65d7e62e56 100644 --- a/src/data/markdown/docs/30 k6-browser/01 Get started/02 Running browser tests.md +++ b/src/data/markdown/docs/30 k6-browser/01 Get started/02 Running browser tests.md @@ -105,7 +105,7 @@ Within the Locator API, various methods such as `type()` can be used to interact ## Asynchronous operations -Since many browser operations happen asynchronously, and in order to follow the Playwright API more closely, we are working on migrating most of the browser module methods to be asynchronous as well. +Since many browser operations happen asynchronously, and to follow the Playwright API more closely, we are working on migrating most of the browser module methods to be asynchronous as well. At the moment, methods such as `page.goto()`, `page.waitForNavigation()` and `Element.click()` return [JavaScript promises](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Using_promises), and scripts must be written to handle this properly. diff --git a/src/data/markdown/docs/40 xk6-disruptor/03 API/02 PodDisruptor/01 Constructor.md b/src/data/markdown/docs/40 xk6-disruptor/03 API/02 PodDisruptor/01 Constructor.md index e7d5186f40..053f66c517 100644 --- a/src/data/markdown/docs/40 xk6-disruptor/03 API/02 PodDisruptor/01 Constructor.md +++ b/src/data/markdown/docs/40 xk6-disruptor/03 API/02 PodDisruptor/01 Constructor.md @@ -14,7 +14,7 @@ The `PodDisruptor()` constructor creates a new instance of a [PodDisruptor](/jav ### Selector -The `selector` defines the criteria a pod must satisfy in order to be a valid target: +The `selector` defines the criteria a pod must satisfy to be a valid target: | Attribute | Description | | --------- | ----------- | diff --git a/src/data/markdown/translated-guides/en/02 Using k6/05 k6 Options/02 Reference.md b/src/data/markdown/translated-guides/en/02 Using k6/05 k6 Options/02 Reference.md index 04cb44d69b..ae7178da0c 100644 --- a/src/data/markdown/translated-guides/en/02 Using k6/05 k6 Options/02 Reference.md +++ b/src/data/markdown/translated-guides/en/02 Using k6/05 k6 Options/02 Reference.md @@ -227,7 +227,7 @@ Available in `k6 run` and `k6 cloud` commands:
When running tests in k6 Cloud and using a non-default config.json file, -specify the cloud token inside your config file in order to authenticate. +specify the cloud token inside your config file to authenticate.