docs: fix leftover broken Node.js code snippets (#23919)
This commit is contained in:
parent
9980f054bc
commit
138e143030
|
|
@ -98,23 +98,23 @@ Here's how to polyfill `waitForAngular` function in Playwright Test:
|
|||
|
||||
```js
|
||||
async function waitForAngular(page) {
|
||||
const clientSideScripts = require('protractor/built/clientsidescripts.js');
|
||||
const clientSideScripts = require('protractor/built/clientsidescripts.js');
|
||||
|
||||
async function executeScriptAsync(page, script, ...scriptArgs) {
|
||||
await page.evaluate(`
|
||||
new Promise((resolve, reject) => {
|
||||
const callback = (errMessage) => {
|
||||
if (errMessage)
|
||||
reject(new Error(errMessage));
|
||||
else
|
||||
resolve();
|
||||
};
|
||||
(function() {${script}}).apply(null, [...${JSON.stringify(scriptArgs)}, callback]);
|
||||
})
|
||||
`);
|
||||
}
|
||||
async function executeScriptAsync(page, script, ...scriptArgs) {
|
||||
await page.evaluate(`
|
||||
new Promise((resolve, reject) => {
|
||||
const callback = (errMessage) => {
|
||||
if (errMessage)
|
||||
reject(new Error(errMessage));
|
||||
else
|
||||
resolve();
|
||||
};
|
||||
(function() {${script}}).apply(null, [...${JSON.stringify(scriptArgs)}, callback]);
|
||||
})
|
||||
`);
|
||||
}
|
||||
|
||||
await executeScriptAsync(page, clientSideScripts.waitForAngular, '');
|
||||
await executeScriptAsync(page, clientSideScripts.waitForAngular, '');
|
||||
}
|
||||
```
|
||||
If you don't want to keep a version protractor around, you can also use this simpler approach using this function (only works for Angular 2+):
|
||||
|
|
@ -130,9 +130,9 @@ Here's how to polyfill `waitForAngular` function in Playwright Test:
|
|||
return new Promise(res => testability.whenStable(res));
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
```
|
||||
});
|
||||
}
|
||||
```
|
||||
1. Polyfill usage
|
||||
|
||||
```js
|
||||
|
|
|
|||
|
|
@ -135,7 +135,7 @@ self.addEventListener('fetch', event => {
|
|||
event.respondWith(responsePromise);
|
||||
});
|
||||
|
||||
self.addEventListener('activate', (event) => {
|
||||
self.addEventListener('activate', event => {
|
||||
event.waitUntil(clients.claim());
|
||||
});
|
||||
```
|
||||
|
|
@ -180,40 +180,41 @@ Consider the code snippets below to understand Playwright's view into the Reques
|
|||
|
||||
|
||||
```js title="complex-service-worker.js"
|
||||
self.addEventListener('install', function (event) {
|
||||
self.addEventListener('install', function(event) {
|
||||
event.waitUntil(
|
||||
caches.open('v1').then(function (cache) {
|
||||
caches.open('v1').then(function(cache) {
|
||||
// 1. Pre-fetches and caches /addressbook.json
|
||||
return cache.add('/addressbook.json');
|
||||
})
|
||||
return cache.add('/addressbook.json');
|
||||
})
|
||||
);
|
||||
});
|
||||
|
||||
// Opt to handle FetchEvent's from the page
|
||||
self.addEventListener('fetch', (event) => {
|
||||
self.addEventListener('fetch', event => {
|
||||
event.respondWith(
|
||||
(async () => {
|
||||
// 1. Try to first serve directly from caches
|
||||
let response = await caches.match(event.request);
|
||||
if (response) return response;
|
||||
(async () => {
|
||||
// 1. Try to first serve directly from caches
|
||||
const response = await caches.match(event.request);
|
||||
if (response) return response;
|
||||
|
||||
// 2. Re-write request for /foo to /bar
|
||||
if (event.request.url.endsWith('foo')) return fetch('./bar');
|
||||
// 2. Re-write request for /foo to /bar
|
||||
if (event.request.url.endsWith('foo')) return fetch('./bar');
|
||||
|
||||
// 3. Prevent tracker.js from being retrieved, and returns a placeholder response
|
||||
if (event.request.url.endsWith('tracker.js'))
|
||||
return new Response('console.log('no trackers!')', {
|
||||
status: 200,
|
||||
headers: { 'Content-Type': 'text/javascript' },
|
||||
});
|
||||
// 3. Prevent tracker.js from being retrieved, and returns a placeholder response
|
||||
if (event.request.url.endsWith('tracker.js')) {
|
||||
return new Response('console.log("no trackers!")', {
|
||||
status: 200,
|
||||
headers: { 'Content-Type': 'text/javascript' },
|
||||
});
|
||||
}
|
||||
|
||||
// 4. Otherwise, fallthrough, perform the fetch and respond
|
||||
return fetch(event.request);
|
||||
})()
|
||||
// 4. Otherwise, fallthrough, perform the fetch and respond
|
||||
return fetch(event.request);
|
||||
})()
|
||||
);
|
||||
});
|
||||
|
||||
self.addEventListener('activate', (event) => {
|
||||
self.addEventListener('activate', event => {
|
||||
event.waitUntil(clients.claim());
|
||||
});
|
||||
```
|
||||
|
|
|
|||
|
|
@ -130,9 +130,9 @@ export default defineConfig({
|
|||
projects: [
|
||||
{
|
||||
name: 'Microsoft Edge',
|
||||
use: {
|
||||
use: {
|
||||
...devices['Desktop Edge'],
|
||||
channel: 'msedge'
|
||||
channel: 'msedge'
|
||||
},
|
||||
},
|
||||
]
|
||||
|
|
|
|||
|
|
@ -389,7 +389,7 @@ export default defineConfig({
|
|||
|
||||
```js
|
||||
test('…', async ({ mount, page, context }) => {
|
||||
// …
|
||||
// …
|
||||
});
|
||||
```
|
||||
|
||||
|
|
|
|||
|
|
@ -137,7 +137,7 @@ export default defineConfig({
|
|||
maxDiffPixelRatio: 0.1,
|
||||
},
|
||||
},
|
||||
|
||||
|
||||
});
|
||||
```
|
||||
|
||||
|
|
|
|||
|
|
@ -327,7 +327,7 @@ async function globalSetup(config: FullConfig) {
|
|||
await context.storageState({ path: storageState as string });
|
||||
await context.tracing.stop({
|
||||
path: './test-results/setup-trace.zip',
|
||||
})
|
||||
});
|
||||
await browser.close();
|
||||
} catch (error) {
|
||||
await context.tracing.stop({
|
||||
|
|
|
|||
|
|
@ -51,7 +51,7 @@ export default defineConfig({
|
|||
},
|
||||
{
|
||||
name: 'Google Chrome',
|
||||
use: {
|
||||
use: {
|
||||
...devices['Desktop Chrome'],
|
||||
channel: 'chrome'
|
||||
},
|
||||
|
|
@ -189,7 +189,7 @@ When working with tests that have a dependency, the dependency will always run f
|
|||
|
||||
Running order:
|
||||
1. Tests in 'setup' project run
|
||||
|
||||
|
||||
2. Tests in 'chromium', 'webkit' and 'firefox' projects run in parallel
|
||||
|
||||
<img width="70%" style={{display: 'flex', margin: 'auto'}} alt="chromium, webkit and firefox projects depend on setup project" loading="lazy" src="https://user-images.githubusercontent.com/13063165/225937080-327b1e63-431f-40e0-90d7-35f21d7a92cb.jpg" />
|
||||
|
|
@ -199,8 +199,8 @@ If there are more than one dependency then these project dependencies will be ru
|
|||
Running order:
|
||||
1. Tests in 'Browser Login' and 'DataBase' projects run in parallel
|
||||
- 'Browser Login' passes
|
||||
- ❌ 'DataBase' fails!
|
||||
|
||||
- ❌ 'DataBase' fails!
|
||||
|
||||
1. “e2e tests” is not run!
|
||||
|
||||
<img width="70%" style={{display: 'flex', margin: 'auto'}} alt="Browser login project is blue, database is red and e2e tests relies on both" loading="lazy" src="https://user-images.githubusercontent.com/13063165/225938262-33c1b78f-f092-4762-a478-7f8cbc1e3b21.jpg" />
|
||||
|
|
|
|||
|
|
@ -209,7 +209,7 @@ test('runs first', async () => {
|
|||
await page.goto('https://playwright.dev/');
|
||||
});
|
||||
|
||||
test('runs second', async () => {
|
||||
test('runs second', async () => {
|
||||
await page.getByText('Get Started').click();
|
||||
});
|
||||
```
|
||||
|
|
|
|||
Loading…
Reference in a new issue