From c216c25a1d325b7dc5f91438481fa6e2f10c160e Mon Sep 17 00:00:00 2001 From: Max Schmitt Date: Tue, 17 Sep 2024 15:54:22 +0200 Subject: [PATCH 001/151] feat(html-reporter): add file name copy button (#32652) --- packages/html-reporter/src/testCaseView.css | 1 + packages/html-reporter/src/testCaseView.spec.tsx | 6 +++--- packages/html-reporter/src/testCaseView.tsx | 6 +++++- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/packages/html-reporter/src/testCaseView.css b/packages/html-reporter/src/testCaseView.css index d87cf3aacb..90e2f4057b 100644 --- a/packages/html-reporter/src/testCaseView.css +++ b/packages/html-reporter/src/testCaseView.css @@ -47,6 +47,7 @@ flex: none; align-items: center; padding: 0 8px 8px; + line-height: 24px; } .test-case-path { diff --git a/packages/html-reporter/src/testCaseView.spec.tsx b/packages/html-reporter/src/testCaseView.spec.tsx index 72552f5184..7c9c99eeb3 100644 --- a/packages/html-reporter/src/testCaseView.spec.tsx +++ b/packages/html-reporter/src/testCaseView.spec.tsx @@ -81,9 +81,9 @@ test('should render copy buttons for annotations', async ({ mount, page, context const component = await mount(); await expect(component.getByText('Annotation text', { exact: false }).first()).toBeVisible(); - component.getByText('Annotation text', { exact: false }).first().hover(); - await expect(component.getByLabel('Copy to clipboard').first()).toBeVisible(); - await component.getByLabel('Copy to clipboard').first().click(); + await component.getByText('Annotation text', { exact: false }).first().hover(); + await expect(component.locator('.test-case-annotation').getByLabel('Copy to clipboard').first()).toBeVisible(); + await component.locator('.test-case-annotation').getByLabel('Copy to clipboard').first().click(); const handle = await page.evaluateHandle(() => navigator.clipboard.readText()); const clipboardContent = await handle.jsonValue(); expect(clipboardContent).toBe('Annotation text'); diff --git a/packages/html-reporter/src/testCaseView.tsx b/packages/html-reporter/src/testCaseView.tsx index 1fe4f42ed3..e3656bf414 100644 --- a/packages/html-reporter/src/testCaseView.tsx +++ b/packages/html-reporter/src/testCaseView.tsx @@ -50,7 +50,11 @@ export const TestCaseView: React.FC<{ {test &&
{test.path.join(' › ')}
} {test &&
{test?.title}
} {test &&
-
{test.location.file}:{test.location.line}
+
+ + {test.location.file}:{test.location.line} + +
{msToString(test.duration)}
} From 751b939d3afe7021d8ebf73dd44b66a177f95698 Mon Sep 17 00:00:00 2001 From: Simon Knott Date: Tue, 17 Sep 2024 16:11:21 +0200 Subject: [PATCH 002/151] feat(fetch): record timings (#32613) Related to https://github.com/microsoft/playwright/issues/19621 Adds some instrumentation to collect timings for `APIRequestContext` requests and adds them to the HAR trace. Doesn't yet expose them via an API, but makes our `Duration` field in the trace viewer show a nice duration: Screenshot 2024-09-14 at 11 46 04 I'm gonna add it to our API in a separate PR. --------- Signed-off-by: Simon Knott Co-authored-by: Dmitry Gozman --- packages/playwright-core/src/server/fetch.ts | 40 ++++++++++++++++- .../src/server/har/harTracer.ts | 6 +++ .../src/utils/happy-eyeballs.ts | 15 +++++++ tests/library/har.spec.ts | 45 ++++++++++++++++++- 4 files changed, 102 insertions(+), 4 deletions(-) diff --git a/packages/playwright-core/src/server/fetch.ts b/packages/playwright-core/src/server/fetch.ts index fc4e2c027d..2aa7f27fee 100644 --- a/packages/playwright-core/src/server/fetch.ts +++ b/packages/playwright-core/src/server/fetch.ts @@ -30,7 +30,7 @@ import { HttpsProxyAgent, SocksProxyAgent } from '../utilsBundle'; import { BrowserContext, verifyClientCertificates } from './browserContext'; import { CookieStore, domainMatches, parseRawCookie } from './cookieStore'; import { MultipartFormData } from './formData'; -import { httpHappyEyeballsAgent, httpsHappyEyeballsAgent } from '../utils/happy-eyeballs'; +import { httpHappyEyeballsAgent, httpsHappyEyeballsAgent, timingForSocket } from '../utils/happy-eyeballs'; import type { CallMetadata } from './instrumentation'; import { SdkObject } from './instrumentation'; import type { Playwright } from './playwright'; @@ -40,6 +40,7 @@ import { Tracing } from './trace/recorder/tracing'; import type * as types from './types'; import type { HeadersArray, ProxySettings } from './types'; import { getMatchingTLSOptionsForOrigin, rewriteOpenSSLErrorIfNeeded } from './socksClientCertificatesInterceptor'; +import type * as har from '@trace/har'; type FetchRequestOptions = { userAgent: string; @@ -71,6 +72,7 @@ export type APIRequestFinishedEvent = { statusCode: number; statusMessage: string; body?: Buffer; + timings: har.Timings; }; type SendRequestOptions = https.RequestOptions & { @@ -294,8 +296,28 @@ export abstract class APIRequestContext extends SdkObject { // If we have a proxy agent already, do not override it. const agent = options.agent || (url.protocol === 'https:' ? httpsHappyEyeballsAgent : httpHappyEyeballsAgent); const requestOptions = { ...options, agent }; + + const startAt = monotonicTime(); + let dnsLookupAt: number | undefined; + let tcpConnectionAt: number | undefined; + let tlsHandshakeAt: number | undefined; + let requestFinishAt: number | undefined; + const request = requestConstructor(url, requestOptions as any, async response => { + const responseAt = monotonicTime(); const notifyRequestFinished = (body?: Buffer) => { + const endAt = monotonicTime(); + // spec: http://www.softwareishard.com/blog/har-12-spec/#timings + const timings: har.Timings = { + send: requestFinishAt! - startAt, + wait: responseAt - requestFinishAt!, + receive: endAt - responseAt, + dns: dnsLookupAt ? dnsLookupAt - startAt : -1, + connect: (tlsHandshakeAt ?? tcpConnectionAt!) - startAt, // "If [ssl] is defined then the time is also included in the connect field " + ssl: tlsHandshakeAt ? tlsHandshakeAt - tcpConnectionAt! : -1, + blocked: -1, + }; + const requestFinishedEvent: APIRequestFinishedEvent = { requestEvent, httpVersion: response.httpVersion, @@ -304,7 +326,8 @@ export abstract class APIRequestContext extends SdkObject { headers: response.headers, rawHeaders: response.rawHeaders, cookies, - body + body, + timings, }; this.emit(APIRequestContext.Events.RequestFinished, requestFinishedEvent); }; @@ -450,6 +473,19 @@ export abstract class APIRequestContext extends SdkObject { this.on(APIRequestContext.Events.Dispose, disposeListener); request.on('close', () => this.off(APIRequestContext.Events.Dispose, disposeListener)); + request.on('socket', socket => { + // happy eyeballs don't emit lookup and connect events, so we use our custom ones + const happyEyeBallsTimings = timingForSocket(socket); + dnsLookupAt = happyEyeBallsTimings.dnsLookupAt; + tcpConnectionAt = happyEyeBallsTimings.tcpConnectionAt; + + // non-happy-eyeballs sockets + socket.on('lookup', () => { dnsLookupAt = monotonicTime(); }); + socket.on('connect', () => { tcpConnectionAt = monotonicTime(); }); + socket.on('secureConnect', () => { tlsHandshakeAt = monotonicTime(); }); + }); + request.on('finish', () => { requestFinishAt = monotonicTime(); }); + progress.log(`→ ${options.method} ${url.toString()}`); if (options.headers) { for (const [name, value] of Object.entries(options.headers)) diff --git a/packages/playwright-core/src/server/har/harTracer.ts b/packages/playwright-core/src/server/har/harTracer.ts index e6330f3889..76da6682d4 100644 --- a/packages/playwright-core/src/server/har/harTracer.ts +++ b/packages/playwright-core/src/server/har/harTracer.ts @@ -212,6 +212,12 @@ export class HarTracer { harEntry.response.statusText = event.statusMessage; harEntry.response.httpVersion = event.httpVersion; harEntry.response.redirectURL = event.headers.location || ''; + + if (!this._options.omitTiming) { + harEntry.timings = event.timings; + this._computeHarEntryTotalTime(harEntry); + } + for (let i = 0; i < event.rawHeaders.length; i += 2) { harEntry.response.headers.push({ name: event.rawHeaders[i], diff --git a/packages/playwright-core/src/utils/happy-eyeballs.ts b/packages/playwright-core/src/utils/happy-eyeballs.ts index 12f082e5a1..18de1a938c 100644 --- a/packages/playwright-core/src/utils/happy-eyeballs.ts +++ b/packages/playwright-core/src/utils/happy-eyeballs.ts @@ -21,6 +21,7 @@ import * as net from 'net'; import * as tls from 'tls'; import { ManualPromise } from './manualPromise'; import { assert } from './debug'; +import { monotonicTime } from './time'; // Implementation(partial) of Happy Eyeballs 2 algorithm described in // https://www.rfc-editor.org/rfc/rfc8305 @@ -28,6 +29,9 @@ import { assert } from './debug'; // Same as in Chromium (https://source.chromium.org/chromium/chromium/src/+/5666ff4f5077a7e2f72902f3a95f5d553ea0d88d:net/socket/transport_connect_job.cc;l=102) const connectionAttemptDelayMs = 300; +const kDNSLookupAt = Symbol('kDNSLookupAt') +const kTCPConnectionAt = Symbol('kTCPConnectionAt') + class HttpHappyEyeballsAgent extends http.Agent { createConnection(options: http.ClientRequestArgs, oncreate?: (err: Error | null, socket?: net.Socket) => void): net.Socket | undefined { // There is no ambiguity in case of IP address. @@ -107,6 +111,7 @@ export async function createConnectionAsync( const lookup = (options as any).__testHookLookup || lookupAddresses; const hostname = clientRequestArgsToHostName(options); const addresses = await lookup(hostname); + const dnsLookupAt = monotonicTime(); const sockets = new Set(); let firstError; let errorCount = 0; @@ -132,9 +137,13 @@ export async function createConnectionAsync( port: options.port as number, host: address }); + (socket as any)[kDNSLookupAt] = dnsLookupAt; + // Each socket may fire only one of 'connect', 'timeout' or 'error' events. // None of these events are fired after socket.destroy() is called. socket.on('connect', () => { + (socket as any)[kTCPConnectionAt] = monotonicTime(); + connected.resolve(); oncreate?.(null, socket); // TODO: Cache the result? @@ -189,3 +198,9 @@ function clientRequestArgsToHostName(options: http.ClientRequestArgs): string { throw new Error('Either options.hostname or options.host must be provided'); } +export function timingForSocket(socket: net.Socket | tls.TLSSocket) { + return { + dnsLookupAt: (socket as any)[kDNSLookupAt] as number | undefined, + tcpConnectionAt: (socket as any)[kTCPConnectionAt] as number | undefined, + } +} diff --git a/tests/library/har.spec.ts b/tests/library/har.spec.ts index 29ee7df2d1..cc65127e3f 100644 --- a/tests/library/har.spec.ts +++ b/tests/library/har.spec.ts @@ -24,9 +24,9 @@ import type { Log } from '../../packages/trace/src/har'; import { parseHar } from '../config/utils'; const { createHttp2Server } = require('../../packages/playwright-core/lib/utils'); -async function pageWithHar(contextFactory: (options?: BrowserContextOptions) => Promise, testInfo: any, options: { outputPath?: string, content?: 'embed' | 'attach' | 'omit', omitContent?: boolean } = {}) { +async function pageWithHar(contextFactory: (options?: BrowserContextOptions) => Promise, testInfo: any, options: { outputPath?: string } & Partial> = {}) { const harPath = testInfo.outputPath(options.outputPath || 'test.har'); - const context = await contextFactory({ recordHar: { path: harPath, content: options.content, omitContent: options.omitContent }, ignoreHTTPSErrors: true }); + const context = await contextFactory({ recordHar: { path: harPath, ...options }, ignoreHTTPSErrors: true }); const page = await context.newPage(); return { page, @@ -820,6 +820,47 @@ it('should include API request', async ({ contextFactory, server }, testInfo) => expect(entry.response.headers.find(h => h.name.toLowerCase() === 'content-type')?.value).toContain('application/json'); expect(entry.response.content.size).toBe(15); expect(entry.response.content.text).toBe(responseBody.toString()); + + expect(entry.time).toBeGreaterThan(0); + expect(entry.timings).toEqual(expect.objectContaining({ + blocked: -1, + connect: expect.any(Number), + dns: expect.any(Number), + receive: expect.any(Number), + send: expect.any(Number), + ssl: expect.any(Number), + wait: expect.any(Number), + })); +}); + +it('should respect minimal mode for API Requests', async ({ contextFactory, server }, testInfo) => { + const { page, getLog } = await pageWithHar(contextFactory, testInfo, { mode: 'minimal' }); + const url = server.PREFIX + '/simple.json'; + await page.request.post(url, { + headers: { cookie: 'a=b; c=d' }, + data: { foo: 'bar' } + }); + const { entries } = await getLog(); + expect(entries).toHaveLength(1); + const [entry] = entries; + expect(entry.timings).toEqual({ receive: -1, send: -1, wait: -1 }); +}); + +it('should include redirects from API request', async ({ contextFactory, server }, testInfo) => { + server.setRedirect('/redirect-me', '/simple.json'); + const { page, getLog } = await pageWithHar(contextFactory, testInfo); + await page.request.post(server.PREFIX + '/redirect-me', { + headers: { cookie: 'a=b; c=d' }, + data: { foo: 'bar' } + }); + const log = await getLog(); + expect(log.entries.length).toBe(2); + const [redirect, json] = log.entries; + expect(redirect.request.url).toBe(server.PREFIX + '/redirect-me'); + expect(json.request.url).toBe(server.PREFIX + '/simple.json'); + + expect(redirect.timings).toBeDefined(); + expect(json.timings).toBeDefined(); }); it('should not hang on resources served from cache', async ({ contextFactory, server, browserName }, testInfo) => { From 507e515cb23349f9ba9dfbca1e12b76b39677f7a Mon Sep 17 00:00:00 2001 From: Max Schmitt Date: Tue, 17 Sep 2024 16:14:24 +0200 Subject: [PATCH 003/151] chore: remove unused @babel/parser (#32654) --- packages/playwright/bundles/babel/package-lock.json | 1 - packages/playwright/bundles/babel/package.json | 1 - packages/playwright/bundles/babel/src/babelBundleImpl.ts | 1 - packages/playwright/src/transform/babelBundle.ts | 1 - 4 files changed, 4 deletions(-) diff --git a/packages/playwright/bundles/babel/package-lock.json b/packages/playwright/bundles/babel/package-lock.json index 0902f0601e..d3531ca0d7 100644 --- a/packages/playwright/bundles/babel/package-lock.json +++ b/packages/playwright/bundles/babel/package-lock.json @@ -11,7 +11,6 @@ "@babel/code-frame": "^7.24.2", "@babel/core": "^7.24.4", "@babel/helper-plugin-utils": "^7.24.0", - "@babel/parser": "^7.24.4", "@babel/plugin-proposal-decorators": "^7.24.1", "@babel/plugin-proposal-explicit-resource-management": "^7.24.1", "@babel/plugin-syntax-async-generators": "^7.8.4", diff --git a/packages/playwright/bundles/babel/package.json b/packages/playwright/bundles/babel/package.json index 27853cf80e..90a0aa85de 100644 --- a/packages/playwright/bundles/babel/package.json +++ b/packages/playwright/bundles/babel/package.json @@ -12,7 +12,6 @@ "@babel/code-frame": "^7.24.2", "@babel/core": "^7.24.4", "@babel/helper-plugin-utils": "^7.24.0", - "@babel/parser": "^7.24.4", "@babel/plugin-proposal-decorators": "^7.24.1", "@babel/plugin-proposal-explicit-resource-management": "^7.24.1", "@babel/plugin-syntax-async-generators": "^7.8.4", diff --git a/packages/playwright/bundles/babel/src/babelBundleImpl.ts b/packages/playwright/bundles/babel/src/babelBundleImpl.ts index f4e44fcea3..82610247f1 100644 --- a/packages/playwright/bundles/babel/src/babelBundleImpl.ts +++ b/packages/playwright/bundles/babel/src/babelBundleImpl.ts @@ -23,7 +23,6 @@ import * as babel from '@babel/core'; export { codeFrameColumns } from '@babel/code-frame'; export { declare } from '@babel/helper-plugin-utils'; export { types } from '@babel/core'; -export { parse } from '@babel/parser'; import traverseFunction from '@babel/traverse'; export const traverse = traverseFunction; diff --git a/packages/playwright/src/transform/babelBundle.ts b/packages/playwright/src/transform/babelBundle.ts index 2806a05aec..faf06b7158 100644 --- a/packages/playwright/src/transform/babelBundle.ts +++ b/packages/playwright/src/transform/babelBundle.ts @@ -18,7 +18,6 @@ import type { BabelFileResult } from '../../bundles/babel/node_modules/@types/ba export const codeFrameColumns: typeof import('../../bundles/babel/node_modules/@types/babel__code-frame').codeFrameColumns = require('./babelBundleImpl').codeFrameColumns; export const declare: typeof import('../../bundles/babel/node_modules/@types/babel__helper-plugin-utils').declare = require('./babelBundleImpl').declare; export const types: typeof import('../../bundles/babel/node_modules/@types/babel__core').types = require('./babelBundleImpl').types; -export const parse: typeof import('../../bundles/babel/node_modules/@babel/parser/typings/babel-parser').parse = require('./babelBundleImpl').parse; export const traverse: typeof import('../../bundles/babel/node_modules/@types/babel__traverse').default = require('./babelBundleImpl').traverse; export type BabelPlugin = [string, any?]; export type BabelTransformFunction = (code: string, filename: string, isTypeScript: boolean, isModule: boolean, pluginsPrefix: BabelPlugin[], pluginsSuffix: BabelPlugin[]) => BabelFileResult; From 8761dafc7365a1340f247472ef9c2c7e36458a15 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=98=A4=EC=86=8C=ED=98=84?= <53892427+osohyun0224@users.noreply.github.com> Date: Wed, 18 Sep 2024 00:11:21 +0900 Subject: [PATCH 004/151] feat(test runner): allow to pass arbitrary location to test.step (#32504) Fixes https://github.com/microsoft/playwright/issues/30160 ### Description: This pull request introduces the ability to specify custom locations for test steps in Playwright. By enabling the provision of arbitrary locations to the test.step method, it resolves the limitation where helper methods obfuscate the original call site, providing more accurate and meaningful location data in test reports. ### Motivation: To enhance the utility and clarity of test reports in Playwright. Specifically, it addresses the need to trace test steps back to their precise location in the code, which is especially important when steps are abstracted in helper functions. This feature is crucial for maintaining accurate documentation and facilitating debugging processes. ### Changes: Added functionality to pass a custom location object to test.step. ### Expected Outcome: This PR is expected to significantly improve the precision and usefulness of diagnostic data in test reports by allowing specific locations within helper functions to be accurately documented. It facilitates better tracking of test executions and simplifies the debugging process, making it easier for developers to understand and address issues within complex tests. ### References: Closes https://github.com/microsoft/playwright/issues/30160 - "[Feature]: allow to pass arbitrary location to test.step" **Code Check** I conducted tests on this new feature by integrating it into some existing test codes, and it worked well. I will attach the code used for testing and a screenshot showing the successful outcome.
toggle dropdown
``` import type { Location } from '../../../packages/playwright/types/testReporter' ... test('should respect the back button', async ({ page }) => { await page.locator('.todo-list li .toggle').nth(1).check(); await checkNumberOfCompletedTodosInLocalStorage(page, 1); ... await test.step('Showing active items', async () => { await page.getByRole('link', { name: 'Active' }).click(); }, {location}); ``` image
--- docs/src/test-api/class-test.md | 5 +++ packages/playwright/src/common/testType.ts | 4 +-- packages/playwright/types/test.d.ts | 2 +- tests/playwright-test/test-step.spec.ts | 39 ++++++++++++++++++++++ utils/generate_types/overrides-test.d.ts | 2 +- 5 files changed, 48 insertions(+), 4 deletions(-) diff --git a/docs/src/test-api/class-test.md b/docs/src/test-api/class-test.md index 9b56fbf2e6..b6ae7d1522 100644 --- a/docs/src/test-api/class-test.md +++ b/docs/src/test-api/class-test.md @@ -1710,6 +1710,11 @@ Step body. Whether to box the step in the report. Defaults to `false`. When the step is boxed, errors thrown from the step internals point to the step call site. See below for more details. +### option: Test.step.location +* since: v1.48 +- `location` <[Location]> +Specifies a custom location for the step to be shown in test reports. By default, location of the [`method: Test.step`] call is shown. + ## method: Test.use * since: v1.10 diff --git a/packages/playwright/src/common/testType.ts b/packages/playwright/src/common/testType.ts index 5c7850a3df..f0882735dc 100644 --- a/packages/playwright/src/common/testType.ts +++ b/packages/playwright/src/common/testType.ts @@ -259,11 +259,11 @@ export class TestTypeImpl { suite._use.push({ fixtures, location }); } - async _step(title: string, body: () => Promise, options: { box?: boolean } = {}): Promise { + async _step(title: string, body: () => Promise, options: {box?: boolean, location?: Location } = {}): Promise { const testInfo = currentTestInfo(); if (!testInfo) throw new Error(`test.step() can only be called from a test`); - const step = testInfo._addStep({ category: 'test.step', title, box: options.box }); + const step = testInfo._addStep({ category: 'test.step', title, location: options.location, box: options.box }); return await zones.run('stepZone', step, async () => { try { const result = await body(); diff --git a/packages/playwright/types/test.d.ts b/packages/playwright/types/test.d.ts index e17a43843c..51a6720a2e 100644 --- a/packages/playwright/types/test.d.ts +++ b/packages/playwright/types/test.d.ts @@ -4703,7 +4703,7 @@ export interface TestType(title: string, body: () => T | Promise, options?: { box?: boolean }): Promise; + step(title: string, body: () => T | Promise, options?: { box?: boolean, location?: Location }): Promise; /** * `expect` function can be used to create test assertions. Read more about [test assertions](https://playwright.dev/docs/test-assertions). * diff --git a/tests/playwright-test/test-step.spec.ts b/tests/playwright-test/test-step.spec.ts index d14bccd98b..ad3478b112 100644 --- a/tests/playwright-test/test-step.spec.ts +++ b/tests/playwright-test/test-step.spec.ts @@ -1246,3 +1246,42 @@ fixture | fixture: page fixture | fixture: context `); }); + +test('test location to test.step', async ({ runInlineTest }) => { + const result = await runInlineTest({ + 'reporter.ts': stepIndentReporter, + 'helper.ts': ` + import { test } from '@playwright/test'; + + export async function dummyStep(test, title, action, location) { + return await test.step(title, action, { location }); + } + + export function getCustomLocation() { + return { file: 'dummy-file.ts', line: 123, column: 45 }; + } + `, + 'playwright.config.ts': ` + module.exports = { + reporter: './reporter', + }; + `, + 'a.test.ts': ` + import { test } from '@playwright/test'; + import { dummyStep, getCustomLocation } from './helper'; + + test('custom location test', async () => { + const location = getCustomLocation(); + await dummyStep(test, 'Perform a dummy step', async () => { + }, location); + }); + ` + }, { reporter: '', workers: 1 }); + + expect(result.exitCode).toBe(0); + expect(stripAnsi(result.output)).toBe(` +hook |Before Hooks +test.step |Perform a dummy step @ dummy-file.ts:123 +hook |After Hooks +`); +}); \ No newline at end of file diff --git a/utils/generate_types/overrides-test.d.ts b/utils/generate_types/overrides-test.d.ts index 90ef7fa75a..be1fa7ee37 100644 --- a/utils/generate_types/overrides-test.d.ts +++ b/utils/generate_types/overrides-test.d.ts @@ -128,7 +128,7 @@ export interface TestType Promise | any): void; afterAll(title: string, inner: (args: TestArgs & WorkerArgs, testInfo: TestInfo) => Promise | any): void; use(fixtures: Fixtures<{}, {}, TestArgs, WorkerArgs>): void; - step(title: string, body: () => T | Promise, options?: { box?: boolean }): Promise; + step(title: string, body: () => T | Promise, options?: { box?: boolean, location?: Location }): Promise; expect: Expect<{}>; extend(fixtures: Fixtures): TestType; info(): TestInfo; From f1390cc269f1b6c8028680f79fcd3a197181ef55 Mon Sep 17 00:00:00 2001 From: Simon Knott Date: Tue, 17 Sep 2024 19:59:44 +0200 Subject: [PATCH 005/151] chore(har recorder): ensure we respect minimal mode (#32658) Closes https://github.com/microsoft/playwright/issues/32653. Adds some test coverage to ensure we respect minimal mode for API Requests in HAR tracing. | omit setting | result | | - | - | | `omitCookies` | added test for it | | `omitTiming` | already covered | | `omitSecurityDetails` | not recorded yet | | `omitServerIP` | we don't record it yet, so no action here. gonna open a separate issue | | `omitPages` | not relevant to API requests | | `omitSizes` | added test for it | | `omitScripts` | not relevant to API requests | --- tests/library/har.spec.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/library/har.spec.ts b/tests/library/har.spec.ts index cc65127e3f..2b7dab4262 100644 --- a/tests/library/har.spec.ts +++ b/tests/library/har.spec.ts @@ -844,6 +844,8 @@ it('should respect minimal mode for API Requests', async ({ contextFactory, serv expect(entries).toHaveLength(1); const [entry] = entries; expect(entry.timings).toEqual({ receive: -1, send: -1, wait: -1 }); + expect(entry.request.cookies).toEqual([]); + expect(entry.request.bodySize).toBe(-1); }); it('should include redirects from API request', async ({ contextFactory, server }, testInfo) => { From ad70e7a78304ff7537b6e22153d4882b7f082292 Mon Sep 17 00:00:00 2001 From: Yury Semikhatsky Date: Tue, 17 Sep 2024 11:14:15 -0700 Subject: [PATCH 006/151] fix(trace-viewer): time delta between local and remote actions (#32661) --- packages/trace-viewer/src/ui/modelUtil.ts | 2 +- tests/assets/trace-remote-time-diff.zip | Bin 0 -> 9102 bytes tests/library/trace-viewer.spec.ts | 6 ++++++ 3 files changed, 7 insertions(+), 1 deletion(-) create mode 100644 tests/assets/trace-remote-time-diff.zip diff --git a/packages/trace-viewer/src/ui/modelUtil.ts b/packages/trace-viewer/src/ui/modelUtil.ts index a544d4dc3f..098b387c8f 100644 --- a/packages/trace-viewer/src/ui/modelUtil.ts +++ b/packages/trace-viewer/src/ui/modelUtil.ts @@ -312,7 +312,7 @@ function monotonicTimeDeltaBetweenLibraryAndRunner(nonPrimaryContexts: ContextEn for (const action of context.actions) { if (!action.startTime) continue; - const key = matchByStepId ? action.stepId! : `${action.apiName}@${(action as any).wallTime}`; + const key = matchByStepId ? action.callId! : `${action.apiName}@${(action as any).wallTime}`; const libraryAction = libraryActions.get(key); if (libraryAction) return action.startTime - libraryAction.startTime; diff --git a/tests/assets/trace-remote-time-diff.zip b/tests/assets/trace-remote-time-diff.zip new file mode 100644 index 0000000000000000000000000000000000000000..e7d7c54c35c8cf883f7536464f1cebb52f110a06 GIT binary patch literal 9102 zcmZ{qV{j$j+T~Ad+qP}9JGOPgj-8XFW81cEbZpypI<`CN%>TYqGjr$8ytV78jjFwB z@8`q%@>|Ms5RjMv000)iugRv<4P!b|00jWx|8oQnAOyIYySOsDI-8i9YpBBkAVm7l zEdEt)AOrvyTWSlcizjLl{D5aSP}&p>n(d(kpH1|f z-{~)gR7n+w~pMBCpeR+D4!YaD?~F=PlJ9x)`C zWBlkT6+Vm(S-MM~R;&)0NYQMM)}uQ?F5nhvsQi82J!UD##zEZ^VWTo!!r1KgvUt_q ziI$Hi`ovc0m$f&pUs0tNNt1$I(zALNHss+6`a-xBr>1{g$uw5~^925=pYfg&3jP%( z-rDe~nT4yLZwMhn_PxPsP!i)Vh3oC&CWyG?UYbRY*L>P;?8#TgM}RVy;MuWmSs1?= z&oeP<*g6GYG{#ou;RD~A{MH>^NE{N+2I zOiw;^poJk{s+k6_WcN|TM%%&}N<`qdLOdr~Y2!#Thk@wwMDoe z@zu(jX#Yr2nqSc!W8mA^z*X>;uBT}`o7EC7$XVz|GC^^u_SiyrWqUpdyO=xf=Pr(V zy|$<%#Ee>21Z7~nw;?{CXppGm#WgMKYlAWLkVjXUKVRqsXXLN(rrY0oAZW_l?ru=6 z9WhLWtmh>pvIhuL%q%K=B!Z+goKY#sA1VL`x;5u7?839gyNvj`z>vAmX@|LZ;^6tu z7d#zVTjkSL>lDlHl+vayK>q6&aJ%d{5qv*M&1L&4`IJKta?AA;D^)JFBaXqmVgG zI+@NC;h+!=gTuXgh-Z{!hPB~NrpM_6wUkgplS*u*!B;>E|Cmu3wnF(D4bkoOYR z=EaRtPj2iECDxbI#;RP}Rt!+YYwH2#S$V;x2I>~%2WzK{<7D`s`{q@x#z&f$_6pK= z#-T3izy}=g!%+*s_M;nAYp9t!V#Ou==pjZ>IR~umFWZ|#1 zVp^g*35Tgps*hONKLq6p&Fq5OY8~)pZi|Ue?5zek(RTfGqYz@PoU-4Mh97U7LNfUC z*uICvVaV2B6(}`mzjL;wit6683f|xGYQ0eLY{`Dx0}YjZd>cn{=M33F?j>1jo&jnh z(JY;5QP`O+?T8CF3W5N^H_ ziE%;7a5xMmgcP!=quZ}Zfz#MG-Rpuewj3G#GQKF*liL>l0zUxxtQ_>nx2JKHH$m|$ zR`mB@JCm--;N)!^OAHu%eHr*Xk6zdh6C}>@wXt2(@ZN+wN*uEtxRlAXty&zDVf8FE znMOLWK-e)V7X-=A{OA?koDR4*1%I-V?aEimzkn)>{i8F9w7q689=A{0DfjE*s+7B} zX?>||5KA&DY3-YuF*r|Y5HRgtzo^ zu`U@3H;P{JsA)kigJD4ur!O-#vMuUPCm=JoMmuu;(Hzm?jJ8SJ6tlTP0Zo|_XR-n% zn#88$GQIN566+!p9 z-FYtkW)%}D(R;(!XW0etAEgx?#(LggU#FK#hRNH}FEd~@&%NCv1EVNbA989r2$4r) zPnzKJ9@Mc1MX3_tLBZDO4WC|t{F$>9cu|qV%3Bkn^7X4~#AftRZvKyN->1#gJ@lM? zitdedG$83!&nUIw*~KL*oA?D`B@=Th6bR{v17{-ft-ed;FWkl;hKMhRpa#EFVl0&7>1deWYqvf;2Us)$E<$Mpv-qPc?T0M=xTq2mbJ+FV8Hx$koh0@mj?M3-Y8o2s zth6zH<)}WHg25zB7%S~4+X~0b4u=7?o{^(q{uxPeeabA;^kW$k9P$R<2+zVa`YO=h z2IFQj#5_y#ZHB1u!BWb@T#nPXQzm?DmJJ~``Y)c}XS?&Il2vSU-8UH+h?J6qjydZO zm@PmwCJIPQ-^b4S+hHrzw(_)92s$QBL6Le0skt(jgB+uaIX6u#N~^ibs5dwXb=bFe&+#{f+9L_~AJ99%X=|J?7q?lB>YUHC}AHP!jyq z$R%LiyG6@MY-cV9F)1`c&9qnCYmNS`{0KrS-SZ}y!$*xNo2$%aT9KT%mh1Q~zaJ(o zz%i8RIH{oT<&DBp5dTxG7&j)gJK+6H^-%~`a^#vsGP2>KeaCXGaF>L)_G|vrwyQJm zb<35bG%J%Ek!oRagCMHQ?qp7rin+K5p-pnBE<5hmAQ3w1g)v zVzjfh`IbB=)-TP+$zW(^6?Tm4AH+%?q&#V8KbUM8Xx3-kYCGv3s8cDQrVZhu$9p!o z_EWY41(47Sw%hAoJL90}C|du!0^90HFl+NrNC;@k%qs|MteH@ZTQ#q9AP?1k?3rof zjsTW)$OXHlzonmx;g^$!MUwLiX`w|Qc3HG7ondnfG5e5r@5frE;>iUUVRtE-5)P1l zHGGbQxH!F-9_>eK2!0DMH$^6oAv9Vs8jqsE5DhyF`eV`==CBSK;q4hqX2Qh{Mkft)s)fSNewf zUtMVy^p1DmNP`e2c`p+5Su$l<)=E=~9B|^uv2Jmdz6(~K2}N>n=py6}s5J6Fx$xeC zvqcNWivC$^mT(o5VJ!dLk0mV-l;Zm6z%C;`HNNo@yPV3gqbNud=NttO43{T?(k01o zABFh9_a1DAaKoy3Q?l!AZAT1K2xwo#*PRQv_To^y9=%a5Qw-Hxq* zT)(0&Twmtvl10VH!Ic71%|Ru={4}Pkl(m^;ofj^&#aD@MhnELPiSe-6i$AnYPz!+b z>GX}t^w^2nF=dIHXn6_OGz=NWoWDYi6H*rT_mZe>@V&On)fNSFzTD;=H$=Eja;_hP zh3rOxu-Lmis3TMBl)`7Rjc~iT-O=Z!qsyiQZM~UqB&{sze@v`j3*=1TI==NIXJ`{B z2zmOrJRH0cWAIovghNI1lLh&iR*^4i+zbYhrU{6vK#-fUv5O;7UEhRCYANDsK`@Cs>;bCtdd1~>ZA4BNls`e`x zKBFZ2m>%a=sBv&a!ojAg_WBrIP;t{T@i(1n@kX@U}2A}59&$UuH1M?$<8!V zen71y)C!GHN2cn_OdzFI!D;gGO#x&dfArPJNT#H<*cr9w<~g=)$tA8Q4QER56CD`~ z@6DXyn(vgjja0|n?}y?+NEKk@lmah^g`6+E)%E1z>{gO^p0raFH&MvbQ%s!%fQUVC zjb5psk7es!v3D8cd4kU;=U9zRA7(0*Nb^+d11kyN#*BI(TplmjchLeL@-Sny|74!D zo!D^Z%5;zo>gb{!IHY#LJ+#CXDfEzU2|w0gMPu0Ngd(jC>;Wfi##>#*Amwlz3kxT{ zr8K*O-aHngcBnEIrf+O<2j@I800Xp;I-sy;+BQ)^k{gBX!mQDqh=r9LNXVOvyynd& zWw+r`zr3yQUNhJ5okQr|f+et#QKw^}cmn1wE#ALPX z*mmj<*|j7aTPwo3a%xYKYUoZkLF=|QYf^)e6txB=HkRxa$l7r<7{Knrv*eCndJ3C9 zC5&96y|0}xTvxjV?H4Iqe}EolO}o;KSxziVWA?R(qZ^*rCWeF;H|-t+=ff%(w2!It zGjnt5h7`9nkgI@H7O;Y3xY^8wr{-1Ay!j|TYQFc@&MdV9uEEU0knZ?p$#9S>{fX0( zt!Ut=gzlWse(@&T5tjrfrwJ!TO&#*O`r44*J`p3*YBSp`2?iUjr@>VKi6Ib!rz0`ijcz)EX2@vd|T7D2b+VMJH*H zouP#nx;r&Eu1t$*x_5cCbiDx<djf`s&iNd>R9RqnixgK zre!dcp|K*yD0g?mwvbPA2BB-_K?uL$mVWDu9YF*U1GyV*Vu|;%&J3toE-C`z5*DFs z$ZU*eMuXhDW@Ut)-pPSqs_|l^HpWvHJs{4JKZ*{J{CI6;JrJ>iuKNC{qag!pMFV4a zeG{hw+YQSuUI0YJ-VYHgdtPcb?>5E`+JZRzTj{dv@YF%r2=LZFLb}udC}FFrlW4RQ zX=TUvTil$3;%&5Ud-j4nn~qUQRI zPfBik?`7mL?%-KBsA+L)3)GI)08hY|7c@?43o1LUP5Z&dd#^$;_(KF$4lBg$XhDdW z=h?Dhd8C9u*nlu{AG1(Qa$0rUP0~vfT?*TRsZ~}tk$MB?Y@TJqM!Q{`3O(9H)Tgo8p+Pc~4Ukyr@-6%Qr(Wt^#x5zUW0@ni z6c&iZD>FSy;b2HY3OlogTeAd%?Ph^IKvKoLE*qaSt1_3|i0B`S4NbG(A|)`15hBT- z4R2q_m#giY&urF+xl^T{pOR2QP;!c|^Ex-uVXtgSbV`91vA*8ZFjEtvME>>N6FM8N zMu<50Q|&ap&_dwaJ?k_!d*zxBX>_K%+Mj*++*KOJ8M7j|2C^|6B(vn^J-B=Mig1uh zh8ZZOG&rkAX@+WQg7CeJ5h~D$gY4mP5ZYVA9d84V45bQBDozSY0^js4jZnDL1oV2} z>ollaF9&)AnCvHXFDoGJDg~l4^h$Trl)ZhuT;_$zXQ5`D0Rv~>e@Dfcjw_me|Hb+e z9dVm(zd0Bx1?aj>@+nO`^yOh|d+M?jHp?5*)7-K$`}*_l$M%z@&RumlO1s`&7%Qxo zF~+hyJ8<$xXZ|57Ki9$%ztU}ImWBTm6@Ea?UIZ!?&=}cRenc!eOk2%nk#@dN!m~gJ z!pQrC<&_(83jkRdgpCu(I(E;hAhq?`(Lt1)~5|4vxPKgpzfjCGv`_P)!?BU@<_*OO_w}Kea ziyGe}JxRHP+{;59kynNBhd6D*49oz0y7NqqGpcYhq)24&YuSQub&*LJ#*{ffO!e0! zEZJ+bA&}DSFda!(wUI0={K+B&(SAxrjoOF3*h__Cgu8 zoUlWk49j6uB$#N?xM9d6ZIy!G=&@l!y^``u^uz}_61c#^u-?1$bxYN=2k~0{L_*Kp zsTfm*qnsjAqR{tGlS=Tw3Tw=@V`}_lU_Jt)-C;#=`lHWmY)PRK@qrD5?!swZ)6I{C z{3S$vEg7GbT0n=2-8sC=0+7$riw4!jP8rbUKGHmDX^ReVw9(2F!s|_+bhzri8TafO zU2F?aE3g{q`vStEF~tD}Wk^Safppc}B6a;fH7Xg!@NNh|&KPDgP|JUk6;hS9^A zd5Ai}+uZ)Td)g#8@Ut3O6QlBIrL`(Db%=WPHg(=EYC($&XUVeC#Jdb`f&QKqaX-n_ z=Sv}<+Ya0(z*lL?TzVF#j!n;>&!qmO4t|~quD9a2qi7b=b8t4;(dja@C~=&6%Itw} zDln;HwN7lL&G6XHHfJ6#0<@JY}q#6?O# zR&)~KPdRFErMFvnHeTW{=Zdu8M3=RVv1?97mcZsu0h(<(DaB&hfQ0cxi9bU#hWgua z7m$Y5TKT<&b+vDa(r3TKqX*piqtH!ohgWfdQk!3O-usJ$IZ{>RL!!2x6JkwRzlFNU zutn88FNL}Z=0=(9R<5m|zawuFzS3?M1oKk-O`X&uF1UcuC4*{KXXM6Wy6xkW6oiTl z1{ZM-h&Z9eG?8S&d%g9RPtH#>?b5H7*a*>6m%~;^)Kiq68!|D9mB^3EZ%$RAZ0SR? z6#1=R8KUDahUTF3rv|RgL_jZ4aF|O*FxLWWCS`E}9H$L!5^;RbnVPV8doA4B*G$%i z0WG5#gf0@{iZVAp^#T)z z3BY+Xs|Q9T22UL@N2oKff*syG4GR@2Bbu5b>lM5EgbwOHhgu`7C`H|txr*YME?E;o zH`5;KO>Hrafm3a|FjL?zZa`XzYZk*k#)7KzW_BdCWg{7S6*H1W zLYhKjR)2zzPn6Wb7eAD*KRy&Zzc{?il2n&F<|x#0T&kpzTz7cZl((~$p0bA}b62uJ zE-e!>MnsN8H{~9?UL#H(-0abJ*dwPY`HtQ?dG?-^R2IgflVYi+&pT7I#7D^3D3}bN zWRJ45L)&CiJ=NyZjk%Hq$GigpSFKs}O}jgTwVL6^U6}S1(X_*Xb`vA}OVqm7o*vyP z+&>Nt9{fnQV)<9{g;f85@BBuMbVuQ}3b;Kt0ZbZixb*s-1J%*`Ltuo*xGL~CXf?NtdxC=tPsTS7SEZZDLfBf+R|UzC@lMaL02e7-hostT=ZSJAd_(4>hPp0)bYg ziAQ7$)%;E+g<|DVcOVe=RA`b-`c1x>DLbRE&esZ~vda&~A`Q2p;=c77QkBjVuji-7 zr;F=L?5Foa|DC}^p0l-H*Ee$wvJ)R}qGxRRQA~+5X?{aazC}q?d-C~l_@5A$zc}%Z zkT6&kXmbKec4@T(lf39xWchmqY`60EEIecqRgu$} zghep@uPJ3j5v-86p#7_&=mBf9_(3Q(1zOaShNJ-b22HY4S12NAaigWO=1pCoJBojA ztmUFIQ*ZR%Q_iz8$CP5VjJi_grzP`AZ+ZoVpY!}mnPZ#oG8SG<=2@z#ss&o@+8t{p zW&IM<-7=)0Bu*;pIkbH)Q~z(rPU*8@aZ)jkes&tN;itit~4#A%zG-1Pk2BEHA27Yb(c3OY*q`Q-ydg}5&cn`=4kvk+v)Md93S0Vf~l@069$;-U#((Aobij3d*YvIBq$dwaJ9b!3$+k@3Pf*n}c&XU;=<{F1-)NcZkqK_7Nz@IG)v@GUby(7%Olt#hWEO zcbum7ejz)>zMU;6fb8C(|HjLDWm5TILg%_{El-D%EdDxeadXYczPRVD!6TtrS0}wq z)d2V!?6c;t%uA6cg+$GbA8JX({Hi8IE*KJJqgF2e{e@NHzA0L8_u1!L91I;k)5X0- zy5xiob!U<8*O0K`?~de+2~ z*3Dz4h^p+xVURy?7beqGH0w`u+@R@f(bbmsPa;NQp=Rh0;(aQAK{CA)V?pH}kTZzD z1fvx^hwI2Q={IINtrd1JCvj-1SdP_kJccqgLLm0_U0%V~-Y*Pf|I8ZO**D z!by2x(yW&a(_YpAt=*lGCRG6l@W0Sv!Y@LQNEnRsAzx=bglIFcdo@uvk5}Oj!e3$2 zfj_H_cTTlrii@vo3eKX6`rg(ZXQyQR&Hyw3-kNO8qFLf_jX;>Zx^W?Q1N1-CE^{$9L@4MRx2L^eHm<)NA&4wyk#@%WD5svwK3wh@?EmwzPC;IoWOznN?bzdZqsD zEJ?Y>w~^O5V|3;G>o3^<&Hg$kHU+i+iF*M5Ddc}+e=e>jrZz7B74rCR;2+f_AH2UP zBA~Cg7`d=rS6C2&ZDtA7mtNd7#CBf z&O&;70BJgklP|)uY_e$|IjMg*DOaAlc53g~CqP*a44fF^zl)&Y{_{=%;GdugpgG`Q ztA7uqK>g1^%6~x0f7kneY3IM|9sLt@`49H_kL3S{d;X{7|J}rYm)s}&Ka&5erT?8K U6!gD71o6*!`DYFw|JUw+0NpDkNdN!< literal 0 HcmV?d00001 diff --git a/tests/library/trace-viewer.spec.ts b/tests/library/trace-viewer.spec.ts index 2b00949b19..44c1258eb7 100644 --- a/tests/library/trace-viewer.spec.ts +++ b/tests/library/trace-viewer.spec.ts @@ -127,6 +127,12 @@ test('should complain about newer version of trace in old viewer', async ({ show await expect(traceViewer.page.getByText('The trace was created by a newer version of Playwright and is not supported by this version of the viewer.')).toBeVisible(); }); +test('should properly synchronize local and remote time', async ({ showTraceViewer, asset }, testInfo) => { + const traceViewer = await showTraceViewer([asset('trace-remote-time-diff.zip')]); + // The total duration should be sub 10s, rather than 16h. + await expect(traceViewer.page.locator('.timeline-time').last()).toHaveText('8.5s'); +}); + test('should contain action info', async ({ showTraceViewer }) => { const traceViewer = await showTraceViewer([traceFile]); await traceViewer.selectAction('locator.click'); From 375a1c49821bd47116d73baed0bf14fd757e684e Mon Sep 17 00:00:00 2001 From: Yury Semikhatsky Date: Tue, 17 Sep 2024 15:37:42 -0700 Subject: [PATCH 007/151] chore: exposeBinding/exposeFunction in bidi (#32669) --- .../src/server/bidi/bidiConnection.ts | 2 +- .../src/server/bidi/bidiExecutionContext.ts | 2 +- .../src/server/bidi/bidiPage.ts | 49 ++++++++++++++++++- 3 files changed, 50 insertions(+), 3 deletions(-) diff --git a/packages/playwright-core/src/server/bidi/bidiConnection.ts b/packages/playwright-core/src/server/bidi/bidiConnection.ts index 7138f2e06a..f348815940 100644 --- a/packages/playwright-core/src/server/bidi/bidiConnection.ts +++ b/packages/playwright-core/src/server/bidi/bidiConnection.ts @@ -72,7 +72,7 @@ export class BidiConnection { let context; if ('context' in object.params) context = object.params.context; - else if (object.method === 'log.entryAdded') + else if (object.method === 'log.entryAdded' || object.method === 'script.message') context = object.params.source?.context; if (context) { const session = this._browsingContextToSession.get(context); diff --git a/packages/playwright-core/src/server/bidi/bidiExecutionContext.ts b/packages/playwright-core/src/server/bidi/bidiExecutionContext.ts index eaacb629e6..c037ba44b4 100644 --- a/packages/playwright-core/src/server/bidi/bidiExecutionContext.ts +++ b/packages/playwright-core/src/server/bidi/bidiExecutionContext.ts @@ -23,7 +23,7 @@ import { BidiSerializer } from './third_party/bidiSerializer'; export class BidiExecutionContext implements js.ExecutionContextDelegate { private readonly _session: BidiSession; - private readonly _target: bidi.Script.Target; + readonly _target: bidi.Script.Target; constructor(session: BidiSession, realmInfo: bidi.Script.RealmInfo) { this._session = session; diff --git a/packages/playwright-core/src/server/bidi/bidiPage.ts b/packages/playwright-core/src/server/bidi/bidiPage.ts index c2d499bd67..5ce5234185 100644 --- a/packages/playwright-core/src/server/bidi/bidiPage.ts +++ b/packages/playwright-core/src/server/bidi/bidiPage.ts @@ -21,7 +21,8 @@ import type * as accessibility from '../accessibility'; import * as dom from '../dom'; import * as dialog from '../dialog'; import type * as frames from '../frames'; -import { type InitScript, Page, type PageDelegate } from '../page'; +import { Page } from '../page'; +import type { InitScript, PageDelegate } from '../page'; import type { Progress } from '../progress'; import type * as types from '../types'; import type { BidiBrowserContext } from './bidiBrowser'; @@ -33,6 +34,7 @@ import { BidiNetworkManager } from './bidiNetworkManager'; import { BrowserContext } from '../browserContext'; const UTILITY_WORLD_NAME = '__playwright_utility_world__'; +const kPlaywrightBindingChannel = 'playwrightChannel'; export class BidiPage implements PageDelegate { readonly rawMouse: RawMouseImpl; @@ -62,6 +64,7 @@ export class BidiPage implements PageDelegate { this._page.on(Page.Events.FrameDetached, (frame: frames.Frame) => this._removeContextsForFrame(frame, false)); this._sessionListeners = [ eventsHelper.addEventListener(bidiSession, 'script.realmCreated', this._onRealmCreated.bind(this)), + eventsHelper.addEventListener(bidiSession, 'script.message', this._onScriptMessage.bind(this)), eventsHelper.addEventListener(bidiSession, 'browsingContext.contextDestroyed', this._onBrowsingContextDestroyed.bind(this)), eventsHelper.addEventListener(bidiSession, 'browsingContext.navigationStarted', this._onNavigationStarted.bind(this)), eventsHelper.addEventListener(bidiSession, 'browsingContext.navigationAborted', this._onNavigationAborted.bind(this)), @@ -93,6 +96,7 @@ export class BidiPage implements PageDelegate { this.updateHttpCredentials(), this.updateRequestInterception(), this._updateViewport(), + this._installMainBinding(), this._addAllInitScripts(), ]); } @@ -327,6 +331,45 @@ export class BidiPage implements PageDelegate { throw new Error('Method not implemented.'); } + // TODO: consider calling this only when bindings are added. + private async _installMainBinding() { + const functionDeclaration = addMainBinding.toString(); + const args: bidi.Script.ChannelValue[] = [{ + type: 'channel', + value: { + channel: kPlaywrightBindingChannel, + ownership: bidi.Script.ResultOwnership.Root, + } + }]; + const promises = []; + promises.push(this._session.send('script.addPreloadScript', { + functionDeclaration, + arguments: args, + })); + promises.push(this._session.send('script.callFunction', { + functionDeclaration, + arguments: args, + target: toBidiExecutionContext(await this._page.mainFrame()._mainContext())._target, + awaitPromise: false, + userActivation: false, + })); + await Promise.all(promises); + } + + private async _onScriptMessage(event: bidi.Script.MessageParameters) { + if (event.channel !== kPlaywrightBindingChannel) + return; + const pageOrError = await this.pageOrError(); + if (pageOrError instanceof Error) + return; + const context = this._realmToContext.get(event.source.realm); + if (!context) + return; + if (event.data.type !== 'string') + return; + await this._page._onBindingCalled(event.data.value, context); + } + async addInitScript(initScript: InitScript): Promise { const { script } = await this._session.send('script.addPreloadScript', { // TODO: remove function call from the source. @@ -522,6 +565,10 @@ export class BidiPage implements PageDelegate { } } +function addMainBinding(callback: (arg: any) => void) { + (globalThis as any)['__playwright__binding__'] = callback; +} + function toBidiExecutionContext(executionContext: dom.FrameExecutionContext): BidiExecutionContext { return (executionContext as any)[contextDelegateSymbol] as BidiExecutionContext; } From 8b84b20dd03470318f0d623b280ed7ad9a90c966 Mon Sep 17 00:00:00 2001 From: Yury Semikhatsky Date: Tue, 17 Sep 2024 16:02:13 -0700 Subject: [PATCH 008/151] chore: back-forward in bidi (#32670) --- .../playwright-core/src/server/bidi/bidiPage.ts | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/packages/playwright-core/src/server/bidi/bidiPage.ts b/packages/playwright-core/src/server/bidi/bidiPage.ts index 5ce5234185..2f2e09441f 100644 --- a/packages/playwright-core/src/server/bidi/bidiPage.ts +++ b/packages/playwright-core/src/server/bidi/bidiPage.ts @@ -319,12 +319,18 @@ export class BidiPage implements PageDelegate { }); } - goBack(): Promise { - throw new Error('Method not implemented.'); + async goBack(): Promise { + return await this._session.send('browsingContext.traverseHistory', { + context: this._session.sessionId, + delta: -1, + }).then(() => true).catch(() => false); } - goForward(): Promise { - throw new Error('Method not implemented.'); + async goForward(): Promise { + return await this._session.send('browsingContext.traverseHistory', { + context: this._session.sessionId, + delta: +1, + }).then(() => true).catch(() => false); } async forceGarbageCollection(): Promise { From 4c4d74ca5b98462857282913744811906b800c71 Mon Sep 17 00:00:00 2001 From: Yury Semikhatsky Date: Tue, 17 Sep 2024 16:51:56 -0700 Subject: [PATCH 009/151] chore: page.screenshot() in bidi (#32671) The results are copied from the existing chromium expectations. --- .../playwright-core/src/server/bidi/bidiPage.ts | 15 ++++++++++++++- ...nshot-element-bounding-box-bidi-chromium.png | Bin 0 -> 474 bytes ...eenshot-element-fractional-bidi-chromium.png | Bin 0 -> 138 bytes ...-element-fractional-offset-bidi-chromium.png | Bin 0 -> 143 bytes ...ement-larger-than-viewport-bidi-chromium.png | Bin 0 -> 2820 bytes ...hot-element-padding-border-bidi-chromium.png | Bin 0 -> 181 bytes .../screenshot-element-rotate-bidi-chromium.png | Bin 0 -> 2377 bytes ...element-scrolled-into-view-bidi-chromium.png | Bin 0 -> 181 bytes .../canvas-changes-0-bidi-chromium.png | Bin 0 -> 5342 bytes .../canvas-changes-1-bidi-chromium.png | Bin 0 -> 5364 bytes .../canvas-changes-2-bidi-chromium.png | Bin 0 -> 5384 bytes .../grid-cell-1-bidi-chromium.png | Bin 0 -> 301 bytes .../hide-should-work-bidi-chromium.png | Bin 0 -> 35985 bytes .../mask-color-should-work-bidi-chromium.png | Bin 0 -> 36066 bytes .../mask-should-work-bidi-chromium.png | Bin 0 -> 36066 bytes ...ld-work-with-elementhandle-bidi-chromium.png | Bin 0 -> 74798 bytes ...k-should-work-with-locator-bidi-chromium.png | Bin 0 -> 74798 bytes ...ld-capture-css-transform-1-bidi-chromium.png | Bin 0 -> 6013 bytes .../remove-should-work-bidi-chromium.png | Bin 0 -> 36201 bytes .../screenshot-canvas-bidi-chromium.png | Bin 0 -> 2265 bytes .../screenshot-canvas-text-bidi-chromium.png | Bin 0 -> 7439 bytes .../screenshot-clip-odd-size-bidi-chromium.png | Bin 0 -> 94 bytes .../screenshot-clip-rect-bidi-chromium.png | Bin 0 -> 1985 bytes .../screenshot-grid-fullpage-bidi-chromium.png | Bin 0 -> 75066 bytes ...page-mask-outside-viewport-bidi-chromium.png | Bin 0 -> 67247 bytes .../screenshot-iframe-bidi-chromium.png | Bin 0 -> 14144 bytes .../screenshot-offscreen-clip-bidi-chromium.png | Bin 0 -> 3719 bytes .../screenshot-sanity-bidi-chromium.png | Bin 0 -> 36296 bytes .../screenshot-translateZ-bidi-chromium.png | Bin 0 -> 2146 bytes .../screenshot-web-font-bidi-chromium.png | Bin 0 -> 2898 bytes .../screenshot-webgl-bidi-chromium.png | Bin 0 -> 4016 bytes ...d-capture-css-box-shadow-1-bidi-chromium.png | Bin 0 -> 7105 bytes .../should-mask-in-parallel-1-bidi-chromium.png | Bin 0 -> 12471 bytes .../should-mask-in-parallel-2-bidi-chromium.png | Bin 0 -> 12276 bytes .../should-mask-inside-iframe-bidi-chromium.png | Bin 0 -> 36066 bytes ...uld-mask-multiple-elements-bidi-chromium.png | Bin 0 -> 35825 bytes .../transparent-bidi-chromium.png | Bin 0 -> 874 bytes .../white-bidi-chromium.jpg | Bin 0 -> 1379 bytes 38 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 tests/page/elementhandle-screenshot.spec.ts-snapshots/screenshot-element-bounding-box-bidi-chromium.png create mode 100644 tests/page/elementhandle-screenshot.spec.ts-snapshots/screenshot-element-fractional-bidi-chromium.png create mode 100644 tests/page/elementhandle-screenshot.spec.ts-snapshots/screenshot-element-fractional-offset-bidi-chromium.png create mode 100644 tests/page/elementhandle-screenshot.spec.ts-snapshots/screenshot-element-larger-than-viewport-bidi-chromium.png create mode 100644 tests/page/elementhandle-screenshot.spec.ts-snapshots/screenshot-element-padding-border-bidi-chromium.png create mode 100644 tests/page/elementhandle-screenshot.spec.ts-snapshots/screenshot-element-rotate-bidi-chromium.png create mode 100644 tests/page/elementhandle-screenshot.spec.ts-snapshots/screenshot-element-scrolled-into-view-bidi-chromium.png create mode 100644 tests/page/page-screenshot.spec.ts-snapshots/canvas-changes-0-bidi-chromium.png create mode 100644 tests/page/page-screenshot.spec.ts-snapshots/canvas-changes-1-bidi-chromium.png create mode 100644 tests/page/page-screenshot.spec.ts-snapshots/canvas-changes-2-bidi-chromium.png create mode 100644 tests/page/page-screenshot.spec.ts-snapshots/grid-cell-1-bidi-chromium.png create mode 100644 tests/page/page-screenshot.spec.ts-snapshots/hide-should-work-bidi-chromium.png create mode 100644 tests/page/page-screenshot.spec.ts-snapshots/mask-color-should-work-bidi-chromium.png create mode 100644 tests/page/page-screenshot.spec.ts-snapshots/mask-should-work-bidi-chromium.png create mode 100644 tests/page/page-screenshot.spec.ts-snapshots/mask-should-work-with-elementhandle-bidi-chromium.png create mode 100644 tests/page/page-screenshot.spec.ts-snapshots/mask-should-work-with-locator-bidi-chromium.png create mode 100644 tests/page/page-screenshot.spec.ts-snapshots/page-screenshot-should-capture-css-transform-1-bidi-chromium.png create mode 100644 tests/page/page-screenshot.spec.ts-snapshots/remove-should-work-bidi-chromium.png create mode 100644 tests/page/page-screenshot.spec.ts-snapshots/screenshot-canvas-bidi-chromium.png create mode 100644 tests/page/page-screenshot.spec.ts-snapshots/screenshot-canvas-text-bidi-chromium.png create mode 100644 tests/page/page-screenshot.spec.ts-snapshots/screenshot-clip-odd-size-bidi-chromium.png create mode 100644 tests/page/page-screenshot.spec.ts-snapshots/screenshot-clip-rect-bidi-chromium.png create mode 100644 tests/page/page-screenshot.spec.ts-snapshots/screenshot-grid-fullpage-bidi-chromium.png create mode 100644 tests/page/page-screenshot.spec.ts-snapshots/screenshot-grid-fullpage-mask-outside-viewport-bidi-chromium.png create mode 100644 tests/page/page-screenshot.spec.ts-snapshots/screenshot-iframe-bidi-chromium.png create mode 100644 tests/page/page-screenshot.spec.ts-snapshots/screenshot-offscreen-clip-bidi-chromium.png create mode 100644 tests/page/page-screenshot.spec.ts-snapshots/screenshot-sanity-bidi-chromium.png create mode 100644 tests/page/page-screenshot.spec.ts-snapshots/screenshot-translateZ-bidi-chromium.png create mode 100644 tests/page/page-screenshot.spec.ts-snapshots/screenshot-web-font-bidi-chromium.png create mode 100644 tests/page/page-screenshot.spec.ts-snapshots/screenshot-webgl-bidi-chromium.png create mode 100644 tests/page/page-screenshot.spec.ts-snapshots/should-capture-css-box-shadow-1-bidi-chromium.png create mode 100644 tests/page/page-screenshot.spec.ts-snapshots/should-mask-in-parallel-1-bidi-chromium.png create mode 100644 tests/page/page-screenshot.spec.ts-snapshots/should-mask-in-parallel-2-bidi-chromium.png create mode 100644 tests/page/page-screenshot.spec.ts-snapshots/should-mask-inside-iframe-bidi-chromium.png create mode 100644 tests/page/page-screenshot.spec.ts-snapshots/should-mask-multiple-elements-bidi-chromium.png create mode 100644 tests/page/page-screenshot.spec.ts-snapshots/transparent-bidi-chromium.png create mode 100644 tests/page/page-screenshot.spec.ts-snapshots/white-bidi-chromium.jpg diff --git a/packages/playwright-core/src/server/bidi/bidiPage.ts b/packages/playwright-core/src/server/bidi/bidiPage.ts index 2f2e09441f..180e8a651e 100644 --- a/packages/playwright-core/src/server/bidi/bidiPage.ts +++ b/packages/playwright-core/src/server/bidi/bidiPage.ts @@ -404,7 +404,20 @@ export class BidiPage implements PageDelegate { } async takeScreenshot(progress: Progress, format: string, documentRect: types.Rect | undefined, viewportRect: types.Rect | undefined, quality: number | undefined, fitsViewport: boolean, scale: 'css' | 'device'): Promise { - throw new Error('Method not implemented.'); + const rect = (documentRect || viewportRect)!; + const { data } = await this._session.send('browsingContext.captureScreenshot', { + context: this._session.sessionId, + format: { + type: `image/${format === 'png' ? 'png' : 'jpeg'}`, + quality: quality || 80, + }, + origin: documentRect ? 'document' : 'viewport', + clip: { + type: 'box', + ...rect, + } + }); + return Buffer.from(data, 'base64'); } async getContentFrame(handle: dom.ElementHandle): Promise { diff --git a/tests/page/elementhandle-screenshot.spec.ts-snapshots/screenshot-element-bounding-box-bidi-chromium.png b/tests/page/elementhandle-screenshot.spec.ts-snapshots/screenshot-element-bounding-box-bidi-chromium.png new file mode 100644 index 0000000000000000000000000000000000000000..c2c3ddca298aba5c502f56e6656fd9330220b327 GIT binary patch literal 474 zcmeAS@N?(olHy`uVBq!ia0vp^Mj*_=1|;R|J2nC-#^NA%Cx&(BWL^TK3NDj4wz}vwUf`e5)Ukjg=c4B?ZY6Q{gD+<_wP}}l z6nSQ36>Zn#-f|$iNz7fE$&pKHm-_rCzvuN??>N7ATC?@xO>6j=CvYp+J%0ba_|K}- z?e1;A{tEc13fvXy$m4X`&ax<)>7s7qi)jue-U{}mHHEE$Jc%sMXWq*OW$s-$i%G;W zZF||t6r&}VGkq>ExtSx>>!xYDf7J|T5r=j2<5pbF65(PsvM%I1RJ=tim8p?oS*Dfk z^|OT?x8ELn{&}OJ?ag94p-v0itCJs3c=3Z{t=G@fKZ902`4Zw^|LI!P4gZAOW-CLy zZnhPjNK*3L8l^h>>?RwlH95zZzB$)Wuj{urPJRCQ;w>U!mP`4PSezL|x?Qg=R|`2? z63iqS9eMQe#}9S&%O8Ea|IFgamuF(Pw=sImn|nEL`|j&|;`G&T&-U|Y;!@~!TUip(bP*}7q&3SPEgSM@h9ZZ`&x!)qR}^g{rtKT7+DOSu6{1- HoD!M<45`mj literal 0 HcmV?d00001 diff --git a/tests/page/elementhandle-screenshot.spec.ts-snapshots/screenshot-element-fractional-bidi-chromium.png b/tests/page/elementhandle-screenshot.spec.ts-snapshots/screenshot-element-fractional-bidi-chromium.png new file mode 100644 index 0000000000000000000000000000000000000000..35c53377f942c843cab3060143ae94c6fd0dd213 GIT binary patch literal 138 zcmeAS@N?(olHy`uVBq!ia0vp^#y~8_!3HFA4=h;^q!^2X+?^QKos)S9D6u`Nc+rW&s8 l$xQXpPL7hitfgaR5|>%Ts?Gg~>mblP22WQ%mvv4FO#tsSEqDL` literal 0 HcmV?d00001 diff --git a/tests/page/elementhandle-screenshot.spec.ts-snapshots/screenshot-element-fractional-offset-bidi-chromium.png b/tests/page/elementhandle-screenshot.spec.ts-snapshots/screenshot-element-fractional-offset-bidi-chromium.png new file mode 100644 index 0000000000000000000000000000000000000000..971561ba698ad8f16af116c371cb6d7a2a0cd940 GIT binary patch literal 143 zcmeAS@N?(olHy`uVBq!ia0vp^ra&yt!3HE(H?jKyDaPU;cPEB*=VV?2Ii8*_jv*1P zZ*OemJ>bA|*g@;Z-|%nYl8PJ|FVqC0StX`fG8k9yn)Kn1?IZ5qO&L>M7wbr+UexGz qi!?d4C{V0-6NhyFbl>HtUo(Ap%%SsUe_#X9PzFy|KbLh*2~7Y}GZx^prw85p?sdAc}; zRLpsM?I7m?1Azk@ykGv)UhaK`rOBjmew=YNKLf-5>hv{Y3|>mU^ExdB^RWeeN$`2#PGmPUZ{j?Z#^NA%Cx&(BWL^R}`JOJ0AsLNt zZy9nm7zi*Nbg8MRTi5!4TO@Mk%Ak9bwDbE4WgfS0ThCr`x^DlqKLtJPYqJ^aeS};s`jax+T2B}0-!UC6l3(jyZ5@*X)afq%4TFv0;>gTe~DWM4fsoOvN literal 0 HcmV?d00001 diff --git a/tests/page/elementhandle-screenshot.spec.ts-snapshots/screenshot-element-rotate-bidi-chromium.png b/tests/page/elementhandle-screenshot.spec.ts-snapshots/screenshot-element-rotate-bidi-chromium.png new file mode 100644 index 0000000000000000000000000000000000000000..5aab14c4b911d75804359a79699ccbd676fce212 GIT binary patch literal 2377 zcmYLLc{r5o8&(YlgHcrWA+n?>O=KuziI5mGG#F84LJQfKoH@qWi5STe24ib1$(H5F z7KzMMmLiRjY+1^FY`<@uKYo9F-*><7bwBrWKhO0(@Abu4S(*s)OYn1XaS2{EH9`Sj z66XQ)0PomC&>i4&zz1bwz*YW1YKDu8@6c5vBswr_{u|CBb4Z$Jsq3+enq^g?z#%Ga z)85APO(6^W1^-wCQ zYRazpfSre2M5LAk!{;^cL|qrgv*_1`Z;(mgd_~20gn+slai?2YHcYIR!5j{o$Bc+A z&~@F8kbho2fBVP#CzuMm2c;b^w-V(J$FeqdCyGbWCC&k~>v6F7zIf_*LZo2J;@IL? z+*T=C8nCc67CL=z)+oS7YmG>3$$g$GJc;y@ z;te6T9IJcqU3EiTctDSAs!aM&X!&cnDSTp~C+ZK(@gG0&#C5$7lh^}9E|Ya>V+B#< z-Oy8|2QiM>4nh=OYDlGI=!wwLoW^;?2*W>D(6+mcii={cyZhJ-CVzzWp6;Wr)zv)P zBREa#_&LmZRsB|I$ZTY8gkPcFO*eCg-g}DBC22oKW&P)aMB;st79kaz_y^@7VVmq z21m1pw~VmaN)+y}GK$}Lwi3NE!t2_NRsRC(qvTap{PWL?#Zh8afY`6mTANjWGU_mS z!&gdp_c!v(`=h=JJAl;5rfrj!(z+%Gr5Q<6vl@ZI8~Ex=>kpD!3t|v2rR~ zue2^jYX%9$sLXYAP$f!`NdRgq;2)xbt28`lBqaRtEL!{@49#Iq8Y!X9qQEb(%jTsZJ z#9H3$0LfjFF6tM90Fnpv8S0;66>rPSm}?6Rk(rJo5Pf~9R99>IsXKv}pMn|RMw_?q zEFh0(9M1zHpi8`rFP~p;!`ER9IVQwpO$zB(8N7M79Qn*4qy5dmf$T&DQhk)su^|}5 zQ973sK?mo}>yN|^)$@cs5FofA7?Gz_9c-K4o(7j}ik?Zh$zIi#Pg<{Ku{l-rRc>W} zbNez-HS6~PnL9!fA2mzwR0N|{GQ*os*Vlu>gklIwwmtN`aQ)P(i-S4}4Y5K8F+Bw5 zQ+Qh@GS@IqeAp}lik}nlv)kXnOH67% zr4y}JRU7QHLbS? z0roXL-wsSaz6@Y+?=yk{h8Twdl+6ZigrJ@0P5X&|pj2LY|Ce~Gmeq5SQi!npoVi9VRk@Pp@SR=yZShDTJN7j zKqtuS_gg1?3L>)|EGNhjhH9{WkB`7MBS*v2m03XgN(QqB_ROk;H=QX$c}+J_V6d((IiK`p0F) z=e&eTc7I+dj7fza*~#D8VBfqMZC_Y`+vbK^2`V@;qHUBG-%_j=$ypcLeRv`Q*^6Ul8!e9jU9i4(z zlm)4O>pyZ17$YoqYwCxB->nY28sdWqGa7@iBfC8sxp|H4M*pf zq6pSdZDm676%4I659WpLPAV@oOE*SBUC%a0FX!a+>!9B?o_|rC341T&$M&wxdFE4yH8V--zp~v87SDfivlUBG-1w literal 0 HcmV?d00001 diff --git a/tests/page/elementhandle-screenshot.spec.ts-snapshots/screenshot-element-scrolled-into-view-bidi-chromium.png b/tests/page/elementhandle-screenshot.spec.ts-snapshots/screenshot-element-scrolled-into-view-bidi-chromium.png new file mode 100644 index 0000000000000000000000000000000000000000..fc34319896c1dd550b7c34700502b6ff76f399d3 GIT binary patch literal 181 zcmeAS@N?(olHy`uVBq!ia0vp^W+2SL1|)l2v+e>Z#^NA%Cx&(BWL^R}`JOJ0AsLNt zZy9nm7zi*Nbg8MRTi5!4TO@Mk%Ak9bwDbE4WgfS0ThCr`x^DlqKLtJPYqJ^aeS};s`jax+T2B}0-!UC6l3(jyZ5@*X)afq%4TFv0;>gTe~DWM4fsoOvN literal 0 HcmV?d00001 diff --git a/tests/page/page-screenshot.spec.ts-snapshots/canvas-changes-0-bidi-chromium.png b/tests/page/page-screenshot.spec.ts-snapshots/canvas-changes-0-bidi-chromium.png new file mode 100644 index 0000000000000000000000000000000000000000..6fcce2cf531473ab7a8e4b7a1cbe7e8965d77f28 GIT binary patch literal 5342 zcmeAS@N?(olHy`uVBq!ia0y~yUj+{FMWw@PXt$29UW9 zGZ?`9L?#80a0_Pxh!Rj^U;9jMWc;%IMqbjSc$5{?GKXdn!S5j64tf&w!`MVvx`(aGTH>gTe~ HDWM4fORfl= literal 0 HcmV?d00001 diff --git a/tests/page/page-screenshot.spec.ts-snapshots/canvas-changes-1-bidi-chromium.png b/tests/page/page-screenshot.spec.ts-snapshots/canvas-changes-1-bidi-chromium.png new file mode 100644 index 0000000000000000000000000000000000000000..f6f130a44ab8acca5d3381d62b07b4d1a8dee6d6 GIT binary patch literal 5364 zcmeAS@N?(olHy`uVBq!ia0y~yU{%gD3Xv9*%;H7qga?ebf@yzIpo08E&9H29GLxTM*5#qmO|D zL?<#SfT$ME1`s8n#=r!m9A=0R z9|jP=!GKW!Bz%a)0Yq^KGmJ`(2Et%Y2|2db1v1BFtr_aJ<=(z540P&)_jA||%-osG z4oblVjj1AbAjXML>6-OG=?D9B)1JK*1Zg;6`-h1K z#7JaP08uTR4IoNDje!YBIm}?-0C7hpM+0H7ri9-&4;IS!zhT&sv-ayZP?q>%wVbga zZQc!Vez}t%-O3M2!khLmjwa>N{0vM9Lo^UZ)A?xCG+I9^fXedGM#^X)j5b$Co8_Yo xx*^(@8O^+-nRhhvj%Hq9GiEdphI}CWWz2I`nfUOoNej>`44$rjF6*2UngE{BE1CcR literal 0 HcmV?d00001 diff --git a/tests/page/page-screenshot.spec.ts-snapshots/grid-cell-1-bidi-chromium.png b/tests/page/page-screenshot.spec.ts-snapshots/grid-cell-1-bidi-chromium.png new file mode 100644 index 0000000000000000000000000000000000000000..2eab11668d689ac8c3e35881fe4cfbb282b8f4d2 GIT binary patch literal 301 zcmeAS@N?(olHy`uVBq!ia0vp^Mj*_=1|;R|J2nC-#^NA%Cx&(BWL^R}&pllnLoyoQ z-rC4{$U)-hNAaD4OeLAMPBj0a7kIGi?c zzHp!SsgC*1>G>_Ig{G!f9+xj*Fp%fnUDwyI!|(oOS6xSbAcu7822^6p*1h*8ED3%s z`CH)q-mfeShbJ7(>(8*+X!Wl*(qrE96PtKk10#G*ELJzKUgb3FNW|Q89EuTV_srNk z(WH}+p)@wy*W|^o)Wrg3T$!gWH%sq3Xp>_0;_;@)=<_cwF9HcCq7jc9p8xmT|Bi9X Xas|637J9-!FEe<$`njxgN@xNAc$#)g literal 0 HcmV?d00001 diff --git a/tests/page/page-screenshot.spec.ts-snapshots/hide-should-work-bidi-chromium.png b/tests/page/page-screenshot.spec.ts-snapshots/hide-should-work-bidi-chromium.png new file mode 100644 index 0000000000000000000000000000000000000000..dd0549a4114a2f0b7c9957fcf72429d1f2f49f11 GIT binary patch literal 35985 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 K$Ukox@IL^(FIC+D literal 0 HcmV?d00001 diff --git a/tests/page/page-screenshot.spec.ts-snapshots/mask-color-should-work-bidi-chromium.png b/tests/page/page-screenshot.spec.ts-snapshots/mask-color-should-work-bidi-chromium.png new file mode 100644 index 0000000000000000000000000000000000000000..fef9e17ffed593eaa8fc383167a40e697f378a00 GIT binary patch literal 36066 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 E0_8u`a{vGU literal 0 HcmV?d00001 diff --git a/tests/page/page-screenshot.spec.ts-snapshots/mask-should-work-bidi-chromium.png b/tests/page/page-screenshot.spec.ts-snapshots/mask-should-work-bidi-chromium.png new file mode 100644 index 0000000000000000000000000000000000000000..c663e342dc66f3a2e2419113d5d347ea53ce89d2 GIT binary patch literal 36066 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

uVlJElENFWy8-Nq5)i6u;=>F0 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 literal 0 HcmV?d00001 diff --git a/tests/page/page-screenshot.spec.ts-snapshots/mask-should-work-with-locator-bidi-chromium.png b/tests/page/page-screenshot.spec.ts-snapshots/mask-should-work-with-locator-bidi-chromium.png new file mode 100644 index 0000000000000000000000000000000000000000..5a13aac48b6b8221d299b17f37b1d48e65df89e0 GIT binary patch literal 74798 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 literal 0 HcmV?d00001 diff --git a/tests/page/page-screenshot.spec.ts-snapshots/page-screenshot-should-capture-css-transform-1-bidi-chromium.png b/tests/page/page-screenshot.spec.ts-snapshots/page-screenshot-should-capture-css-transform-1-bidi-chromium.png new file mode 100644 index 0000000000000000000000000000000000000000..d29a2b4ab28107e6d276b8c40c030aa3fec51c96 GIT binary patch literal 6013 zcmeAS@N?(olHy`uVBq!ia0y~yUJ{|d=oD`{;&kD>n3{u@*RQ<>5sl%UjF#z;r7Q@ zC#wg~2S-E)gN3oayuF-yzg+L;#fw+^GXm8rJh+v#F~X{_gJgy8U18 zmM4Gy_xI!Z_50^N&;l9BwTEGj;pPMo({3um4yJqOn)vyb+ksMEgJ?374YT|#2K{6) z9w7gKYX#$uq%%z*(|2$%7P!u2Wd<@o82U7%KTr~WkP4CdA)wE|3^eBZcc?Kl1sR;< z-o1sY<`aG(`Qr-b2czv}WyhX1v!@*dn!%8Lj{Crh>+Db-M?)z@`1M(q3O2oDrafoY z&YgRIpV*(X=F|VhgEX9J7H`OY^7Y`sify~I!Oq*@#&W>)OHqFQoHy@gfnBzS5op(r zRY1ESrsc*ltg{6BwZV*Wg5k0J%@5Ld?|%H|K>{RrfAj!-l5h&B-n_i*SU5xzXB@+) zd7J;AZHj;Q*0&avIT_}AFg$6Fd;5Mi#1;#nEi-PjR7gUMzWRh!LH?)?C@UqHayG=A zc)$6bC7+c#>~zZ6l)&QMg%+;nPV-a6UT?(o+i4 z^Y?f1T# zcmhhAbLP+SsRb2L4wFU;1R53ygS8}n;8Roi{@#rnw`TnUl@bg|>vYAsk6v;A(EfSy z`cW&GhV+NN&0*nQ$osA&%H9Cw1MbGy)l9G;&hUn+vY^Vu?F!yjY#7G$m z0F@H@B%j}xIey!%&^Y5tmH lAdGh1M_|`|L{99obN7-^&t5s{W|kQk5#kr+~1 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 z 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%0D`$eK33G{n=EXQC4P*V>2Y}*1*!e?N^Gg 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�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 literal 0 HcmV?d00001 diff --git a/tests/page/page-screenshot.spec.ts-snapshots/screenshot-iframe-bidi-chromium.png b/tests/page/page-screenshot.spec.ts-snapshots/screenshot-iframe-bidi-chromium.png new file mode 100644 index 0000000000000000000000000000000000000000..56aa8706bbb79834e5070c1a23dc55adf2dcdc8c GIT binary patch literal 14144 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 a^RQV@n4N3!7x0rf2wYk7cCO-sr~d+sd%sTr literal 0 HcmV?d00001 diff --git a/tests/page/page-screenshot.spec.ts-snapshots/screenshot-offscreen-clip-bidi-chromium.png b/tests/page/page-screenshot.spec.ts-snapshots/screenshot-offscreen-clip-bidi-chromium.png new file mode 100644 index 0000000000000000000000000000000000000000..21f7b0f461ad833a3874ed0d8dce9b1db62ffa22 GIT binary patch literal 3719 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 literal 0 HcmV?d00001 diff --git a/tests/page/page-screenshot.spec.ts-snapshots/screenshot-sanity-bidi-chromium.png b/tests/page/page-screenshot.spec.ts-snapshots/screenshot-sanity-bidi-chromium.png new file mode 100644 index 0000000000000000000000000000000000000000..122a4f0ae04d939518343abfbe203d9c719612bb GIT binary patch literal 36296 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 M>FVdQ&MBb@0Ke99JOBUy literal 0 HcmV?d00001 diff --git a/tests/page/page-screenshot.spec.ts-snapshots/screenshot-web-font-bidi-chromium.png b/tests/page/page-screenshot.spec.ts-snapshots/screenshot-web-font-bidi-chromium.png new file mode 100644 index 0000000000000000000000000000000000000000..40aa6d483cf9c98500b16abc78c82856acff0e26 GIT binary patch literal 2898 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 IWYatU1^x<1#{d8T literal 0 HcmV?d00001 diff --git a/tests/page/page-screenshot.spec.ts-snapshots/should-capture-css-box-shadow-1-bidi-chromium.png b/tests/page/page-screenshot.spec.ts-snapshots/should-capture-css-box-shadow-1-bidi-chromium.png new file mode 100644 index 0000000000000000000000000000000000000000..089549eb3c95ce9eac283c8a3c86f3663c3a8369 GIT binary patch literal 7105 zcmeHL`&$!d7XA`~fXc1NDiR1b^|Dn#>m`vyz+0(Rq_w+L7erka5nTxi7;eeLYU@3$ z-Dk-P3XkgwwmyJ}5HP^RMtOX#nXy^7V zf5^WvK6oH;pm#CvOH;__4irk4C4IRd_mCcg0MjQ)ak%vsIfvk(n%Xrn3`Y+e_kh>|XdzG>8)dwCj?6uad(Jr_ zg5l1nwfD9%X)IaZu*e&8imy4^L36MrwP?I1`BV5Lx-|mF#=q_NP)5I9t%$WYre&XQ z3PZvvJL2#a{)<;CRsA0y>2ujalp8YDscUFJ`gGD0ZC=C$8`1=}yt3vfGND9@Y-=Ur;X9h9o!*qRIej>eZ|9rwH~fE%@t-l(HN*gr8uS4_Zk)I<5D6CLo2Vo_UGME3N2b$B&Zc2 zkpd?ln>Vy#-tCQ^c;}VA(OCIxcFr%MlUb`AVUJlMF29c0nM|KxmB&Kz9jy%wgAWza z&dm$a*;D2Jq$P=?4vv^!y<#H5;%>#Q=?r23b`OurjwTp%eVbf2EA^80Z44y5%pOFX zoj(n1pTjNNR$j1bo8tIJ2cCjQJrzyJKE6|5_+R}OhIhcd)xkhwd;W{Un1f>ivN1@R zMI{%07jt+vNiODDsjR6q2{$ZlHm`dchvWE9wX@rl;6s z(%i<{xqL2;$o}`9IMvH+$iG2mEL1%azTd@~WtVRazI9i)dx*IZk>4C1$rQ z7Tqm#SWT0fN|UV)uF~pZO&#Q!(&Adcugyt&{)w$Y3X*M$vT01uJG~elaL}gFU`nDn=g($GP_LA^X=20I|fW$ap zZZy|lfpkiCPD4?aa^FbN$$E6Ym|}CnYEG0MDyZx0lTG!rOeb^JQFIacD~REj&JdU2 zy<!wDrywN@7#lVcLac39{sAK!6NExXpkYvS05BI2 z`cVHNe>^{JEN>UDZ^?<4F{{1MFM|r?@`+M}KWed=im?vCOP)!+c`D{a0ZCk5zR88S z9K}*9;Hw|&)Z%X_cmeUFYLI_atKauIqZE)^MJQi{KS`bf# z+zPuQkgiRc_)GDM8Jda%3krM;^vX)4zjq-&g6X}a6pC&-!)Fb? zr}!fbthaENRkq&ievLHp>}#`GmJU;0S2ZNp=p8uON>6YsVYQL-nG3VYRKNCzJ{JOJ z<}}n|{6J~`ZgJWN25h!Zq`<8=s$I2p{)sMRY+BfA-S&4LH8rxDDACpYFLwKk6!M=A zVNCVR=f-%oUA~O`@F?&_XJ-TzS43`-H}fIY(A(YF717+&0aK zOVNNctss?>JjBv{job}r4%YOFh^%kL>Zgh%XM-tfW;<`pglt=3h^4fiwGxlp#Faop zEp+w@VlB<~^0gstbHa>%u?D&@IZWmAbXMuN@Il*rag8;3Nj8UrAj7jmHk^k6{LZ)L zffUHHA=Z_#2V`-Mgdx3s?dEr-P1*sSN&DHFRE4DKTAG*7JcI)b<9KBFx}@Gy%xb|8 z5yUHvqW0sY`gA3u^E1nf%@maapGGiGfe}|-ljvwG9mSu#anGy?AZyctZuzlA3+y<8 zPCzmGY(I)i3h&^E^J@j}1qPKj54Z0{mEXscz@5{5*zSpcuP(*Ph-u{;K7WI(WfA$jmSeu4x;LaU;w%2Yw^v(YP DeOWRK literal 0 HcmV?d00001 diff --git a/tests/page/page-screenshot.spec.ts-snapshots/should-mask-in-parallel-1-bidi-chromium.png b/tests/page/page-screenshot.spec.ts-snapshots/should-mask-in-parallel-1-bidi-chromium.png new file mode 100644 index 0000000000000000000000000000000000000000..18f4ed1e6096ce1307ec16cbe962ff655eef4264 GIT binary patch literal 12471 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 MO-B`{Vsroh0F~3M*8l(j literal 0 HcmV?d00001 diff --git a/tests/page/page-screenshot.spec.ts-snapshots/should-mask-inside-iframe-bidi-chromium.png b/tests/page/page-screenshot.spec.ts-snapshots/should-mask-inside-iframe-bidi-chromium.png new file mode 100644 index 0000000000000000000000000000000000000000..c663e342dc66f3a2e2419113d5d347ea53ce89d2 GIT binary patch literal 36066 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

uVlJElENFWy8-Nq5)i6u;=>F0 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 A>i_@% literal 0 HcmV?d00001 diff --git a/tests/page/page-screenshot.spec.ts-snapshots/transparent-bidi-chromium.png b/tests/page/page-screenshot.spec.ts-snapshots/transparent-bidi-chromium.png new file mode 100644 index 0000000000000000000000000000000000000000..b9aa8f7a7260c5f25fcb19c8ede467c5abe7e064 GIT binary patch literal 874 zcmeAS@N?(olHy`uVBq!ia0y~yVAKI&4mO}jWo=(6kYX$ja(7}_cTVOd0|T>)r;B4q z#hka-HgXr_|?=~}oAE(#^#R!MC1V+gw))bCW z4ryUdDF&IcpE-rwvvCu$szg+{F&cJY47mGY0A>d!iC?v=ksAd6>t&xtzPC{armlTu$)tmsSPcA3|vF`xcHn};aAiF>S z*>X8BZ zGam@k8FCm>859^i8S)sC8T5cGBL)KoLk6?|w;7xn*jQNESXtQESlQUw**LfaxVShu zxkUK*c?85oBqYQ|#KfdzRpq6mm1V@l6m%4n)zme$G$rMA4RkdOR5dg;K!z}~v$Jz? za0zp932R7+NokM_{vTiv Date: Tue, 17 Sep 2024 17:01:38 -0700 Subject: [PATCH 010/151] chore: bump vite dependency 5.0.13->5.4.6 (#32672) Fixes the following: ``` npm audit report vite 5.0.0 - 5.2.13 Severity: moderate Vite DOM Clobbering gadget found in vite bundled scripts that leads to XSS - https://github.com/advisories/GHSA-64vr-g452-qvp3 ``` --- package-lock.json | 371 ++++++++++++++++++++++++---------------------- package.json | 2 +- 2 files changed, 195 insertions(+), 178 deletions(-) diff --git a/package-lock.json b/package-lock.json index b7cdad125e..efe6fafd8b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -61,7 +61,7 @@ "react-dom": "^18.1.0", "ssim.js": "^3.5.0", "typescript": "^5.5.3", - "vite": "^5.0.13", + "vite": "^5.4.6", "ws": "^8.17.1", "xml2js": "^0.5.0", "yaml": "^2.2.2" @@ -852,9 +852,9 @@ } }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz", - "integrity": "sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", "cpu": [ "ppc64" ], @@ -1517,9 +1517,9 @@ "link": true }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.14.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.14.0.tgz", - "integrity": "sha512-jwXtxYbRt1V+CdQSy6Z+uZti7JF5irRKF8hlKfEnF/xJpcNGuuiZMBvuoYM+x9sr9iWGnzrlM0+9hvQ1kgkf1w==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.21.3.tgz", + "integrity": "sha512-MmKSfaB9GX+zXl6E8z4koOr/xU63AMVleLEa64v7R0QF/ZloMs5vcD1sHgM64GXXS1csaJutG+ddtzcueI/BLg==", "cpu": [ "arm" ], @@ -1529,9 +1529,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.14.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.14.0.tgz", - "integrity": "sha512-fI9nduZhCccjzlsA/OuAwtFGWocxA4gqXGTLvOyiF8d+8o0fZUeSztixkYjcGq1fGZY3Tkq4yRvHPFxU+jdZ9Q==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.21.3.tgz", + "integrity": "sha512-zrt8ecH07PE3sB4jPOggweBjJMzI1JG5xI2DIsUbkA+7K+Gkjys6eV7i9pOenNSDJH3eOr/jLb/PzqtmdwDq5g==", "cpu": [ "arm64" ], @@ -1541,9 +1541,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.14.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.14.0.tgz", - "integrity": "sha512-BcnSPRM76/cD2gQC+rQNGBN6GStBs2pl/FpweW8JYuz5J/IEa0Fr4AtrPv766DB/6b2MZ/AfSIOSGw3nEIP8SA==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.21.3.tgz", + "integrity": "sha512-P0UxIOrKNBFTQaXTxOH4RxuEBVCgEA5UTNV6Yz7z9QHnUJ7eLX9reOd/NYMO3+XZO2cco19mXTxDMXxit4R/eQ==", "cpu": [ "arm64" ], @@ -1553,9 +1553,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.14.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.14.0.tgz", - "integrity": "sha512-LDyFB9GRolGN7XI6955aFeI3wCdCUszFWumWU0deHA8VpR3nWRrjG6GtGjBrQxQKFevnUTHKCfPR4IvrW3kCgQ==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.21.3.tgz", + "integrity": "sha512-L1M0vKGO5ASKntqtsFEjTq/fD91vAqnzeaF6sfNAy55aD+Hi2pBI5DKwCO+UNDQHWsDViJLqshxOahXyLSh3EA==", "cpu": [ "x64" ], @@ -1565,9 +1565,21 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.14.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.14.0.tgz", - "integrity": "sha512-ygrGVhQP47mRh0AAD0zl6QqCbNsf0eTo+vgwkY6LunBcg0f2Jv365GXlDUECIyoXp1kKwL5WW6rsO429DBY/bA==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.21.3.tgz", + "integrity": "sha512-btVgIsCjuYFKUjopPoWiDqmoUXQDiW2A4C3Mtmp5vACm7/GnyuprqIDPNczeyR5W8rTXEbkmrJux7cJmD99D2g==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.21.3.tgz", + "integrity": "sha512-zmjbSphplZlau6ZTkxd3+NMtE4UKVy7U4aVFMmHcgO5CUbw17ZP6QCgyxhzGaU/wFFdTfiojjbLG3/0p9HhAqA==", "cpu": [ "arm" ], @@ -1577,9 +1589,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.14.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.14.0.tgz", - "integrity": "sha512-x+uJ6MAYRlHGe9wi4HQjxpaKHPM3d3JjqqCkeC5gpnnI6OWovLdXTpfa8trjxPLnWKyBsSi5kne+146GAxFt4A==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.21.3.tgz", + "integrity": "sha512-nSZfcZtAnQPRZmUkUQwZq2OjQciR6tEoJaZVFvLHsj0MF6QhNMg0fQ6mUOsiCUpTqxTx0/O6gX0V/nYc7LrgPw==", "cpu": [ "arm64" ], @@ -1589,9 +1601,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.14.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.14.0.tgz", - "integrity": "sha512-nrRw8ZTQKg6+Lttwqo6a2VxR9tOroa2m91XbdQ2sUUzHoedXlsyvY1fN4xWdqz8PKmf4orDwejxXHjh7YBGUCA==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.21.3.tgz", + "integrity": "sha512-MnvSPGO8KJXIMGlQDYfvYS3IosFN2rKsvxRpPO2l2cum+Z3exiExLwVU+GExL96pn8IP+GdH8Tz70EpBhO0sIQ==", "cpu": [ "arm64" ], @@ -1601,11 +1613,11 @@ ] }, "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.14.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.14.0.tgz", - "integrity": "sha512-xV0d5jDb4aFu84XKr+lcUJ9y3qpIWhttO3Qev97z8DKLXR62LC3cXT/bMZXrjLF9X+P5oSmJTzAhqwUbY96PnA==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.21.3.tgz", + "integrity": "sha512-+W+p/9QNDr2vE2AXU0qIy0qQE75E8RTwTwgqS2G5CRQ11vzq0tbnfBd6brWhS9bCRjAjepJe2fvvkvS3dno+iw==", "cpu": [ - "ppc64le" + "ppc64" ], "optional": true, "os": [ @@ -1613,9 +1625,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.14.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.14.0.tgz", - "integrity": "sha512-SDDhBQwZX6LPRoPYjAZWyL27LbcBo7WdBFWJi5PI9RPCzU8ijzkQn7tt8NXiXRiFMJCVpkuMkBf4OxSxVMizAw==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.21.3.tgz", + "integrity": "sha512-yXH6K6KfqGXaxHrtr+Uoy+JpNlUlI46BKVyonGiaD74ravdnF9BUNC+vV+SIuB96hUMGShhKV693rF9QDfO6nQ==", "cpu": [ "riscv64" ], @@ -1625,9 +1637,9 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.14.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.14.0.tgz", - "integrity": "sha512-RxB/qez8zIDshNJDufYlTT0ZTVut5eCpAZ3bdXDU9yTxBzui3KhbGjROK2OYTTor7alM7XBhssgoO3CZ0XD3qA==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.21.3.tgz", + "integrity": "sha512-R8cwY9wcnApN/KDYWTH4gV/ypvy9yZUHlbJvfaiXSB48JO3KpwSpjOGqO4jnGkLDSk1hgjYkTbTt6Q7uvPf8eg==", "cpu": [ "s390x" ], @@ -1637,9 +1649,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.14.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.14.0.tgz", - "integrity": "sha512-C6y6z2eCNCfhZxT9u+jAM2Fup89ZjiG5pIzZIDycs1IwESviLxwkQcFRGLjnDrP+PT+v5i4YFvlcfAs+LnreXg==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.21.3.tgz", + "integrity": "sha512-kZPbX/NOPh0vhS5sI+dR8L1bU2cSO9FgxwM8r7wHzGydzfSjLRCFAT87GR5U9scj2rhzN3JPYVC7NoBbl4FZ0g==", "cpu": [ "x64" ], @@ -1649,9 +1661,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.14.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.14.0.tgz", - "integrity": "sha512-i0QwbHYfnOMYsBEyjxcwGu5SMIi9sImDVjDg087hpzXqhBSosxkE7gyIYFHgfFl4mr7RrXksIBZ4DoLoP4FhJg==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.21.3.tgz", + "integrity": "sha512-S0Yq+xA1VEH66uiMNhijsWAafffydd2X5b77eLHfRmfLsRSpbiAWiRHV6DEpz6aOToPsgid7TI9rGd6zB1rhbg==", "cpu": [ "x64" ], @@ -1661,9 +1673,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.14.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.14.0.tgz", - "integrity": "sha512-Fq52EYb0riNHLBTAcL0cun+rRwyZ10S9vKzhGKKgeD+XbwunszSY0rVMco5KbOsTlwovP2rTOkiII/fQ4ih/zQ==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.21.3.tgz", + "integrity": "sha512-9isNzeL34yquCPyerog+IMCNxKR8XYmGd0tHSV+OVx0TmE0aJOo9uw4fZfUuk2qxobP5sug6vNdZR6u7Mw7Q+Q==", "cpu": [ "arm64" ], @@ -1673,9 +1685,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.14.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.14.0.tgz", - "integrity": "sha512-e/PBHxPdJ00O9p5Ui43+vixSgVf4NlLsmV6QneGERJ3lnjIua/kim6PRFe3iDueT1rQcgSkYP8ZBBXa/h4iPvw==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.21.3.tgz", + "integrity": "sha512-nMIdKnfZfzn1Vsk+RuOvl43ONTZXoAPUUxgcU0tXooqg4YrAqzfKzVenqqk2g5efWh46/D28cKFrOzDSW28gTA==", "cpu": [ "ia32" ], @@ -1685,9 +1697,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.14.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.14.0.tgz", - "integrity": "sha512-aGg7iToJjdklmxlUlJh/PaPNa4PmqHfyRMLunbL3eaMO0gp656+q1zOKkpJ/CVe9CryJv6tAN1HDoR8cNGzkag==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.21.3.tgz", + "integrity": "sha512-fOvu7PCQjAj4eWDEuD8Xz5gpzFqXzGlxHZozHP4b9Jxv9APtdxL6STqztDzMLuRXEc4UpXGGhx029Xgm91QBeA==", "cpu": [ "x64" ], @@ -5862,9 +5874,9 @@ } }, "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz", + "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==" }, "node_modules/picomatch": { "version": "2.3.1", @@ -5917,9 +5929,9 @@ } }, "node_modules/postcss": { - "version": "8.4.38", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz", - "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==", + "version": "8.4.47", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz", + "integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==", "funding": [ { "type": "opencollective", @@ -5936,8 +5948,8 @@ ], "dependencies": { "nanoid": "^3.3.7", - "picocolors": "^1.0.0", - "source-map-js": "^1.2.0" + "picocolors": "^1.1.0", + "source-map-js": "^1.2.1" }, "engines": { "node": "^10 || ^12 || >=14" @@ -6301,9 +6313,9 @@ } }, "node_modules/rollup": { - "version": "4.14.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.14.0.tgz", - "integrity": "sha512-Qe7w62TyawbDzB4yt32R0+AbIo6m1/sqO7UPzFS8Z/ksL5mrfhA0v4CavfdmFav3D+ub4QeAgsGEe84DoWe/nQ==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.21.3.tgz", + "integrity": "sha512-7sqRtBNnEbcBtMeRVc6VRsJMmpI+JU1z9VTvW8D4gXIYQFz0aLcsE6rRkyghZkLfEgUZgVvOG7A5CVz/VW5GIA==", "dependencies": { "@types/estree": "1.0.5" }, @@ -6315,21 +6327,22 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.14.0", - "@rollup/rollup-android-arm64": "4.14.0", - "@rollup/rollup-darwin-arm64": "4.14.0", - "@rollup/rollup-darwin-x64": "4.14.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.14.0", - "@rollup/rollup-linux-arm64-gnu": "4.14.0", - "@rollup/rollup-linux-arm64-musl": "4.14.0", - "@rollup/rollup-linux-powerpc64le-gnu": "4.14.0", - "@rollup/rollup-linux-riscv64-gnu": "4.14.0", - "@rollup/rollup-linux-s390x-gnu": "4.14.0", - "@rollup/rollup-linux-x64-gnu": "4.14.0", - "@rollup/rollup-linux-x64-musl": "4.14.0", - "@rollup/rollup-win32-arm64-msvc": "4.14.0", - "@rollup/rollup-win32-ia32-msvc": "4.14.0", - "@rollup/rollup-win32-x64-msvc": "4.14.0", + "@rollup/rollup-android-arm-eabi": "4.21.3", + "@rollup/rollup-android-arm64": "4.21.3", + "@rollup/rollup-darwin-arm64": "4.21.3", + "@rollup/rollup-darwin-x64": "4.21.3", + "@rollup/rollup-linux-arm-gnueabihf": "4.21.3", + "@rollup/rollup-linux-arm-musleabihf": "4.21.3", + "@rollup/rollup-linux-arm64-gnu": "4.21.3", + "@rollup/rollup-linux-arm64-musl": "4.21.3", + "@rollup/rollup-linux-powerpc64le-gnu": "4.21.3", + "@rollup/rollup-linux-riscv64-gnu": "4.21.3", + "@rollup/rollup-linux-s390x-gnu": "4.21.3", + "@rollup/rollup-linux-x64-gnu": "4.21.3", + "@rollup/rollup-linux-x64-musl": "4.21.3", + "@rollup/rollup-win32-arm64-msvc": "4.21.3", + "@rollup/rollup-win32-ia32-msvc": "4.21.3", + "@rollup/rollup-win32-x64-msvc": "4.21.3", "fsevents": "~2.3.2" } }, @@ -6589,9 +6602,9 @@ } }, "node_modules/source-map-js": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", - "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", "engines": { "node": ">=0.10.0" } @@ -7171,13 +7184,13 @@ } }, "node_modules/vite": { - "version": "5.2.8", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.2.8.tgz", - "integrity": "sha512-OyZR+c1CE8yeHw5V5t59aXsUPPVTHMDjEZz8MgguLL/Q7NblxhZUlTu9xSPqlsUO/y+X7dlU05jdhvyycD55DA==", + "version": "5.4.6", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.6.tgz", + "integrity": "sha512-IeL5f8OO5nylsgzd9tq4qD2QqI0k2CQLGrWD0rCN0EQJZpBK5vJAx0I+GDkMOXxQX/OfFHMuLIx6ddAxGX/k+Q==", "dependencies": { - "esbuild": "^0.20.1", - "postcss": "^8.4.38", - "rollup": "^4.13.0" + "esbuild": "^0.21.3", + "postcss": "^8.4.43", + "rollup": "^4.20.0" }, "bin": { "vite": "bin/vite.js" @@ -7196,6 +7209,7 @@ "less": "*", "lightningcss": "^1.21.0", "sass": "*", + "sass-embedded": "*", "stylus": "*", "sugarss": "*", "terser": "^5.4.0" @@ -7213,6 +7227,9 @@ "sass": { "optional": true }, + "sass-embedded": { + "optional": true + }, "stylus": { "optional": true }, @@ -7243,9 +7260,9 @@ } }, "node_modules/vite/node_modules/@esbuild/android-arm": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.20.2.tgz", - "integrity": "sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", "cpu": [ "arm" ], @@ -7258,9 +7275,9 @@ } }, "node_modules/vite/node_modules/@esbuild/android-arm64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.20.2.tgz", - "integrity": "sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", "cpu": [ "arm64" ], @@ -7273,9 +7290,9 @@ } }, "node_modules/vite/node_modules/@esbuild/android-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.20.2.tgz", - "integrity": "sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", "cpu": [ "x64" ], @@ -7288,9 +7305,9 @@ } }, "node_modules/vite/node_modules/@esbuild/darwin-arm64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.20.2.tgz", - "integrity": "sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", "cpu": [ "arm64" ], @@ -7303,9 +7320,9 @@ } }, "node_modules/vite/node_modules/@esbuild/darwin-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.20.2.tgz", - "integrity": "sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", "cpu": [ "x64" ], @@ -7318,9 +7335,9 @@ } }, "node_modules/vite/node_modules/@esbuild/freebsd-arm64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.2.tgz", - "integrity": "sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", "cpu": [ "arm64" ], @@ -7333,9 +7350,9 @@ } }, "node_modules/vite/node_modules/@esbuild/freebsd-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.20.2.tgz", - "integrity": "sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", "cpu": [ "x64" ], @@ -7348,9 +7365,9 @@ } }, "node_modules/vite/node_modules/@esbuild/linux-arm": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.20.2.tgz", - "integrity": "sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", "cpu": [ "arm" ], @@ -7363,9 +7380,9 @@ } }, "node_modules/vite/node_modules/@esbuild/linux-arm64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.20.2.tgz", - "integrity": "sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", "cpu": [ "arm64" ], @@ -7378,9 +7395,9 @@ } }, "node_modules/vite/node_modules/@esbuild/linux-ia32": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.20.2.tgz", - "integrity": "sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", "cpu": [ "ia32" ], @@ -7393,9 +7410,9 @@ } }, "node_modules/vite/node_modules/@esbuild/linux-loong64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.20.2.tgz", - "integrity": "sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", "cpu": [ "loong64" ], @@ -7408,9 +7425,9 @@ } }, "node_modules/vite/node_modules/@esbuild/linux-mips64el": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.20.2.tgz", - "integrity": "sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", "cpu": [ "mips64el" ], @@ -7423,9 +7440,9 @@ } }, "node_modules/vite/node_modules/@esbuild/linux-ppc64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.20.2.tgz", - "integrity": "sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", "cpu": [ "ppc64" ], @@ -7438,9 +7455,9 @@ } }, "node_modules/vite/node_modules/@esbuild/linux-riscv64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.20.2.tgz", - "integrity": "sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", "cpu": [ "riscv64" ], @@ -7453,9 +7470,9 @@ } }, "node_modules/vite/node_modules/@esbuild/linux-s390x": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.20.2.tgz", - "integrity": "sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", "cpu": [ "s390x" ], @@ -7468,9 +7485,9 @@ } }, "node_modules/vite/node_modules/@esbuild/linux-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.20.2.tgz", - "integrity": "sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", "cpu": [ "x64" ], @@ -7483,9 +7500,9 @@ } }, "node_modules/vite/node_modules/@esbuild/netbsd-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.20.2.tgz", - "integrity": "sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", "cpu": [ "x64" ], @@ -7498,9 +7515,9 @@ } }, "node_modules/vite/node_modules/@esbuild/openbsd-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.20.2.tgz", - "integrity": "sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", "cpu": [ "x64" ], @@ -7513,9 +7530,9 @@ } }, "node_modules/vite/node_modules/@esbuild/sunos-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.20.2.tgz", - "integrity": "sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", "cpu": [ "x64" ], @@ -7528,9 +7545,9 @@ } }, "node_modules/vite/node_modules/@esbuild/win32-arm64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.20.2.tgz", - "integrity": "sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", "cpu": [ "arm64" ], @@ -7543,9 +7560,9 @@ } }, "node_modules/vite/node_modules/@esbuild/win32-ia32": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.20.2.tgz", - "integrity": "sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", "cpu": [ "ia32" ], @@ -7558,9 +7575,9 @@ } }, "node_modules/vite/node_modules/@esbuild/win32-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.20.2.tgz", - "integrity": "sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", "cpu": [ "x64" ], @@ -7573,9 +7590,9 @@ } }, "node_modules/vite/node_modules/esbuild": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.20.2.tgz", - "integrity": "sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", "hasInstallScript": true, "bin": { "esbuild": "bin/esbuild" @@ -7584,29 +7601,29 @@ "node": ">=12" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.20.2", - "@esbuild/android-arm": "0.20.2", - "@esbuild/android-arm64": "0.20.2", - "@esbuild/android-x64": "0.20.2", - "@esbuild/darwin-arm64": "0.20.2", - "@esbuild/darwin-x64": "0.20.2", - "@esbuild/freebsd-arm64": "0.20.2", - "@esbuild/freebsd-x64": "0.20.2", - "@esbuild/linux-arm": "0.20.2", - "@esbuild/linux-arm64": "0.20.2", - "@esbuild/linux-ia32": "0.20.2", - "@esbuild/linux-loong64": "0.20.2", - "@esbuild/linux-mips64el": "0.20.2", - "@esbuild/linux-ppc64": "0.20.2", - "@esbuild/linux-riscv64": "0.20.2", - "@esbuild/linux-s390x": "0.20.2", - "@esbuild/linux-x64": "0.20.2", - "@esbuild/netbsd-x64": "0.20.2", - "@esbuild/openbsd-x64": "0.20.2", - "@esbuild/sunos-x64": "0.20.2", - "@esbuild/win32-arm64": "0.20.2", - "@esbuild/win32-ia32": "0.20.2", - "@esbuild/win32-x64": "0.20.2" + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" } }, "node_modules/vitefu": { diff --git a/package.json b/package.json index c095546c7d..511b17aa9e 100644 --- a/package.json +++ b/package.json @@ -100,7 +100,7 @@ "react-dom": "^18.1.0", "ssim.js": "^3.5.0", "typescript": "^5.5.3", - "vite": "^5.0.13", + "vite": "^5.4.6", "ws": "^8.17.1", "xml2js": "^0.5.0", "yaml": "^2.2.2" From 355c88f48f31990e83f683df693081035d093d71 Mon Sep 17 00:00:00 2001 From: Pavel Feldman Date: Tue, 17 Sep 2024 18:26:44 -0700 Subject: [PATCH 011/151] chore: iterate towards recording into trace (#32646) --- packages/playwright-core/src/cli/program.ts | 4 - .../src/server/codegen/language.ts | 34 +-- .../dispatchers/browserContextDispatcher.ts | 16 +- .../src/server/recorder/contextRecorder.ts | 2 +- .../src/server/recorder/recorderApp.ts | 5 +- .../src/server/recorder/recorderCollection.ts | 27 +- .../src/server/recorder/recorderFrontend.ts | 1 + .../server/recorder/recorderInTraceViewer.ts | 11 +- .../src/server/recorder/recorderUtils.ts | 236 ++++++++++++++++-- .../src/server/trace/recorder/tracing.ts | 11 +- .../src/server/trace/viewer/traceViewer.ts | 1 + packages/trace-viewer/src/traceModel.ts | 1 + packages/trace-viewer/src/ui/recorderView.tsx | 2 + tests/library/inspector/inspectorTest.ts | 2 +- 14 files changed, 289 insertions(+), 64 deletions(-) diff --git a/packages/playwright-core/src/cli/program.ts b/packages/playwright-core/src/cli/program.ts index d8fa8230c6..fb27b14231 100644 --- a/packages/playwright-core/src/cli/program.ts +++ b/packages/playwright-core/src/cli/program.ts @@ -567,10 +567,6 @@ async function codegen(options: Options & { target: string, output?: string, tes tracesDir, }); dotenv.config({ path: 'playwright.env' }); - if (process.env.PW_RECORDER_IS_TRACE_VIEWER) { - await fs.promises.mkdir(tracesDir, { recursive: true }); - await context.tracing.start({ name: 'trace', _live: true }); - } await context._enableRecorder({ language, launchOptions, diff --git a/packages/playwright-core/src/server/codegen/language.ts b/packages/playwright-core/src/server/codegen/language.ts index 4b1ba99b6f..7ee775b18b 100644 --- a/packages/playwright-core/src/server/codegen/language.ts +++ b/packages/playwright-core/src/server/codegen/language.ts @@ -20,7 +20,6 @@ import type * as types from '../types'; import type { ActionInContext, LanguageGenerator, LanguageGeneratorOptions } from './types'; export function generateCode(actions: ActionInContext[], languageGenerator: LanguageGenerator, options: LanguageGeneratorOptions) { - actions = collapseActions(actions); const header = languageGenerator.generateHeader(options); const footer = languageGenerator.generateFooter(options.saveStorage); const actionTexts = actions.map(a => languageGenerator.generateAction(a)).filter(Boolean); @@ -70,6 +69,23 @@ export function toKeyboardModifiers(modifiers: number): types.SmartKeyboardModif return result; } +export function fromKeyboardModifiers(modifiers?: types.SmartKeyboardModifier[]): number { + let result = 0; + if (!modifiers) + return result; + if (modifiers.includes('Alt')) + result |= 1; + if (modifiers.includes('Control')) + result |= 2; + if (modifiers.includes('ControlOrMeta')) + result |= 2; + if (modifiers.includes('Meta')) + result |= 4; + if (modifiers.includes('Shift')) + result |= 8; + return result; +} + export function toClickOptionsForSourceCode(action: actions.ClickAction): types.MouseClickOptions { const modifiers = toKeyboardModifiers(action.modifiers); const options: types.MouseClickOptions = {}; @@ -84,19 +100,3 @@ export function toClickOptionsForSourceCode(action: actions.ClickAction): types. options.position = action.position; return options; } - -function collapseActions(actions: ActionInContext[]): ActionInContext[] { - const result: ActionInContext[] = []; - for (const action of actions) { - const lastAction = result[result.length - 1]; - const isSameAction = lastAction && lastAction.action.name === action.action.name && lastAction.frame.pageAlias === action.frame.pageAlias && lastAction.frame.framePath.join('|') === action.frame.framePath.join('|'); - const isSameSelector = lastAction && 'selector' in lastAction.action && 'selector' in action.action && action.action.selector === lastAction.action.selector; - const shouldMerge = isSameAction && (action.action.name === 'navigate' || (action.action.name === 'fill' && isSameSelector)); - if (!shouldMerge) { - result.push(action); - continue; - } - result[result.length - 1] = action; - } - return result; -} diff --git a/packages/playwright-core/src/server/dispatchers/browserContextDispatcher.ts b/packages/playwright-core/src/server/dispatchers/browserContextDispatcher.ts index 5c8fa550a7..c2d5d8e1f6 100644 --- a/packages/playwright-core/src/server/dispatchers/browserContextDispatcher.ts +++ b/packages/playwright-core/src/server/dispatchers/browserContextDispatcher.ts @@ -41,6 +41,7 @@ import { serializeError } from '../errors'; import { ElementHandleDispatcher } from './elementHandlerDispatcher'; import { RecorderInTraceViewer } from '../recorder/recorderInTraceViewer'; import { RecorderApp } from '../recorder/recorderApp'; +import type { IRecorderAppFactory } from '../recorder/recorderFrontend'; export class BrowserContextDispatcher extends Dispatcher implements channels.BrowserContextChannel { _type_EventTarget = true; @@ -293,7 +294,20 @@ export class BrowserContextDispatcher extends Dispatcher { - const factory = process.env.PW_RECORDER_IS_TRACE_VIEWER ? RecorderInTraceViewer.factory(this._context) : RecorderApp.factory(this._context); + let factory: IRecorderAppFactory; + if (process.env.PW_RECORDER_IS_TRACE_VIEWER) { + factory = RecorderInTraceViewer.factory(this._context); + await this._context.tracing.start({ + name: 'trace', + snapshots: true, + screenshots: false, + live: true, + inMemory: true, + }); + await this._context.tracing.startChunk({ name: 'trace', title: 'trace' }); + } else { + factory = RecorderApp.factory(this._context); + } await Recorder.show(this._context, factory, params); } diff --git a/packages/playwright-core/src/server/recorder/contextRecorder.ts b/packages/playwright-core/src/server/recorder/contextRecorder.ts index 71a1d3ec75..13f3ae1a62 100644 --- a/packages/playwright-core/src/server/recorder/contextRecorder.ts +++ b/packages/playwright-core/src/server/recorder/contextRecorder.ts @@ -73,7 +73,7 @@ export class ContextRecorder extends EventEmitter { saveStorage: params.saveStorage, }; - const collection = new RecorderCollection(this._pageAliases, params.mode === 'recording'); + const collection = new RecorderCollection(context, this._pageAliases, params.mode === 'recording'); collection.on('change', () => { this._recorderSources = []; for (const languageGenerator of this._orderedLanguages) { diff --git a/packages/playwright-core/src/server/recorder/recorderApp.ts b/packages/playwright-core/src/server/recorder/recorderApp.ts index 67d8b6e8dc..5e170b2e3e 100644 --- a/packages/playwright-core/src/server/recorder/recorderApp.ts +++ b/packages/playwright-core/src/server/recorder/recorderApp.ts @@ -43,6 +43,7 @@ declare global { } export class EmptyRecorderApp extends EventEmitter implements IRecorderApp { + wsEndpointForTest: undefined; async close(): Promise {} async setPaused(paused: boolean): Promise {} async setMode(mode: Mode): Promise {} @@ -54,7 +55,7 @@ export class EmptyRecorderApp extends EventEmitter implements IRecorderApp { export class RecorderApp extends EventEmitter implements IRecorderApp { private _page: Page; - readonly wsEndpoint: string | undefined; + readonly wsEndpointForTest: string | undefined; private _recorder: IRecorder; constructor(recorder: IRecorder, page: Page, wsEndpoint: string | undefined) { @@ -62,7 +63,7 @@ export class RecorderApp extends EventEmitter implements IRecorderApp { this.setMaxListeners(0); this._recorder = recorder; this._page = page; - this.wsEndpoint = wsEndpoint; + this.wsEndpointForTest = wsEndpoint; } async close() { diff --git a/packages/playwright-core/src/server/recorder/recorderCollection.ts b/packages/playwright-core/src/server/recorder/recorderCollection.ts index e9c2b31427..e67865a2dc 100644 --- a/packages/playwright-core/src/server/recorder/recorderCollection.ts +++ b/packages/playwright-core/src/server/recorder/recorderCollection.ts @@ -20,31 +20,35 @@ import type { Page } from '../page'; import type { Signal } from './recorderActions'; import type { ActionInContext } from '../codegen/types'; import { monotonicTime } from '../../utils/time'; -import { callMetadataForAction } from './recorderUtils'; +import { callMetadataForAction, collapseActions, traceEventsToAction } from './recorderUtils'; import { serializeError } from '../errors'; import { performAction } from './recorderRunner'; import type { CallMetadata } from '@protocol/callMetadata'; import { isUnderTest } from '../../utils/debug'; +import type { BrowserContext } from '../browserContext'; export class RecorderCollection extends EventEmitter { private _actions: ActionInContext[] = []; private _enabled: boolean; private _pageAliases: Map; + private _context: BrowserContext; - constructor(pageAliases: Map, enabled: boolean) { + constructor(context: BrowserContext, pageAliases: Map, enabled: boolean) { super(); + this._context = context; this._enabled = enabled; this._pageAliases = pageAliases; - this.restart(); } restart() { this._actions = []; - this.emit('change'); + this._fireChange(); } actions() { - return this._actions; + if (!process.env.PW_RECORDER_IS_TRACE_VIEWER) + return collapseActions(this._actions); + return collapseActions(traceEventsToAction(this._context.tracing.inMemoryEvents())); } setEnabled(enabled: boolean) { @@ -60,7 +64,7 @@ export class RecorderCollection extends EventEmitter { addRecordedAction(actionInContext: ActionInContext) { if (['openPage', 'closePage'].includes(actionInContext.action.name)) { this._actions.push(actionInContext); - this.emit('change'); + this._fireChange(); return; } this._addAction(actionInContext).catch(() => {}); @@ -69,11 +73,16 @@ export class RecorderCollection extends EventEmitter { private async _addAction(actionInContext: ActionInContext, callback?: (callMetadata: CallMetadata) => Promise) { if (!this._enabled) return; + if (actionInContext.action.name === 'openPage' || actionInContext.action.name === 'closePage') { + this._actions.push(actionInContext); + this._fireChange(); + return; + } const { callMetadata, mainFrame } = callMetadataForAction(this._pageAliases, actionInContext); await mainFrame.instrumentation.onBeforeCall(mainFrame, callMetadata); this._actions.push(actionInContext); - this.emit('change'); + this._fireChange(); const error = await callback?.(callMetadata).catch((e: Error) => e); callMetadata.endTime = monotonicTime(); callMetadata.error = error ? serializeError(error) : undefined; @@ -120,4 +129,8 @@ export class RecorderCollection extends EventEmitter { return; } } + + private _fireChange() { + this.emit('change'); + } } diff --git a/packages/playwright-core/src/server/recorder/recorderFrontend.ts b/packages/playwright-core/src/server/recorder/recorderFrontend.ts index 162c9f9964..d2cdffdca4 100644 --- a/packages/playwright-core/src/server/recorder/recorderFrontend.ts +++ b/packages/playwright-core/src/server/recorder/recorderFrontend.ts @@ -23,6 +23,7 @@ export interface IRecorder { } export interface IRecorderApp extends EventEmitter { + readonly wsEndpointForTest: string | undefined; close(): Promise; setPaused(paused: boolean): Promise; setMode(mode: Mode): Promise; diff --git a/packages/playwright-core/src/server/recorder/recorderInTraceViewer.ts b/packages/playwright-core/src/server/recorder/recorderInTraceViewer.ts index a9fd766141..8f08b969e1 100644 --- a/packages/playwright-core/src/server/recorder/recorderInTraceViewer.ts +++ b/packages/playwright-core/src/server/recorder/recorderInTraceViewer.ts @@ -25,6 +25,7 @@ import { gracefullyProcessExitDoNotHang } from '../../utils/processLauncher'; import type { Transport } from '../../utils/httpServer'; export class RecorderInTraceViewer extends EventEmitter implements IRecorderApp { + readonly wsEndpointForTest: string | undefined; private _recorder: IRecorder; private _transport: Transport; @@ -32,15 +33,16 @@ export class RecorderInTraceViewer extends EventEmitter implements IRecorderApp return async (recorder: IRecorder) => { const transport = new RecorderTransport(); const trace = path.join(context._browser.options.tracesDir, 'trace'); - await openApp(trace, { transport }); - return new RecorderInTraceViewer(context, recorder, transport); + const wsEndpointForTest = await openApp(trace, { transport, headless: !context._browser.options.headful }); + return new RecorderInTraceViewer(context, recorder, transport, wsEndpointForTest); }; } - constructor(context: BrowserContext, recorder: IRecorder, transport: Transport) { + constructor(context: BrowserContext, recorder: IRecorder, transport: Transport, wsEndpointForTest: string | undefined) { super(); this._recorder = recorder; this._transport = transport; + this.wsEndpointForTest = wsEndpointForTest; } async close(): Promise { @@ -72,11 +74,12 @@ export class RecorderInTraceViewer extends EventEmitter implements IRecorderApp } } -async function openApp(trace: string, options?: TraceViewerServerOptions & { headless?: boolean }) { +async function openApp(trace: string, options?: TraceViewerServerOptions & { headless?: boolean }): Promise { const server = await startTraceViewerServer(options); await installRootRedirect(server, [trace], { ...options, webApp: 'recorder.html' }); const page = await openTraceViewerApp(server.urlPrefix('precise'), 'chromium', options); page.on('close', () => gracefullyProcessExitDoNotHang(0)); + return page.context()._browser.options.wsEndpoint; } class RecorderTransport implements Transport { diff --git a/packages/playwright-core/src/server/recorder/recorderUtils.ts b/packages/playwright-core/src/server/recorder/recorderUtils.ts index ac6c970489..27c212c6e5 100644 --- a/packages/playwright-core/src/server/recorder/recorderUtils.ts +++ b/packages/playwright-core/src/server/recorder/recorderUtils.ts @@ -20,9 +20,12 @@ import type { Page } from '../page'; import type { ActionInContext } from '../codegen/types'; import type { Frame } from '../frames'; import type * as actions from './recorderActions'; -import { toKeyboardModifiers } from '../codegen/language'; +import type * as channels from '@protocol/channels'; +import type * as trace from '@trace/trace'; +import { fromKeyboardModifiers, toKeyboardModifiers } from '../codegen/language'; import { serializeExpectedTextValues } from '../../utils/expectUtils'; import { createGuid, monotonicTime } from '../../utils'; +import { serializeValue } from '../../protocol/serializers'; export function metadataToCallLog(metadata: CallMetadata, status: CallLogStatus): CallLog { let title = metadata.apiName || metadata.method; @@ -76,57 +79,113 @@ export async function frameForAction(pageAliases: Map, actionInCon return result.frame; } -export function traceParamsForAction(actionInContext: ActionInContext) { +export function traceParamsForAction(actionInContext: ActionInContext): { method: string, params: any } { const { action } = actionInContext; switch (action.name) { - case 'navigate': return { url: action.url }; - case 'openPage': return {}; - case 'closePage': return {}; + case 'navigate': { + const params: channels.FrameGotoParams = { + url: action.url, + }; + return { method: 'goto', params }; + } + case 'openPage': + case 'closePage': + throw new Error('Not reached'); } const selector = buildFullSelector(actionInContext.frame.framePath, action.selector); switch (action.name) { - case 'click': return { selector, clickCount: action.clickCount }; - case 'press': { - const modifiers = toKeyboardModifiers(action.modifiers); - const shortcut = [...modifiers, action.key].join('+'); - return { selector, key: shortcut }; - } - case 'fill': return { selector, text: action.text }; - case 'setInputFiles': return { selector, files: action.files }; - case 'check': return { selector }; - case 'uncheck': return { selector }; - case 'select': return { selector, values: action.options.map(value => ({ value })) }; - case 'assertChecked': { - return { + case 'click': { + const params: channels.FrameClickParams = { selector, - expression: 'to.be.checked', - isNot: !action.checked, + strict: true, + modifiers: toKeyboardModifiers(action.modifiers), + button: action.button, + clickCount: action.clickCount, + position: action.position, }; + return { method: 'click', params }; + } + case 'press': { + const params: channels.FramePressParams = { + selector, + strict: true, + key: [...toKeyboardModifiers(action.modifiers), action.key].join('+'), + }; + return { method: 'press', params }; + } + case 'fill': { + const params: channels.FrameFillParams = { + selector, + strict: true, + value: action.text, + }; + return { method: 'fill', params }; + } + case 'setInputFiles': { + const params: channels.FrameSetInputFilesParams = { + selector, + strict: true, + localPaths: action.files, + }; + return { method: 'setInputFiles', params }; + } + case 'check': { + const params: channels.FrameCheckParams = { + selector, + strict: true, + }; + return { method: 'check', params }; + } + case 'uncheck': { + const params: channels.FrameUncheckParams = { + selector, + strict: true, + }; + return { method: 'uncheck', params }; + } + case 'select': { + const params: channels.FrameSelectOptionParams = { + selector, + strict: true, + options: action.options.map(option => ({ value: option })), + }; + return { method: 'selectOption', params }; + } + case 'assertChecked': { + const params: channels.FrameExpectParams = { + selector: action.selector, + expression: 'to.be.checked', + isNot: action.checked, + }; + return { method: 'expect', params }; } case 'assertText': { - return { + const params: channels.FrameExpectParams = { selector, expression: 'to.have.text', expectedText: serializeExpectedTextValues([action.text], { matchSubstring: true, normalizeWhiteSpace: true }), isNot: false, }; + return { method: 'expect', params }; } case 'assertValue': { - return { + const params: channels.FrameExpectParams = { selector, expression: 'to.have.value', - expectedValue: action.value, + expectedValue: { value: serializeValue(action.value, value => ({ fallThrough: value })), handles: [] }, isNot: false, }; + return { method: 'expect', params }; } case 'assertVisible': { - return { + const params: channels.FrameExpectParams = { selector, expression: 'to.be.visible', isNot: false, }; + return { method: 'expect', params }; } } } @@ -134,8 +193,10 @@ export function traceParamsForAction(actionInContext: ActionInContext) { export function callMetadataForAction(pageAliases: Map, actionInContext: ActionInContext): { callMetadata: CallMetadata, mainFrame: Frame } { const mainFrame = mainFrameForAction(pageAliases, actionInContext); const { action } = actionInContext; + const { method, params } = traceParamsForAction(actionInContext); const callMetadata: CallMetadata = { id: `call@${createGuid()}`, + stepId: `recorder@${createGuid()}`, apiName: 'frame.' + action.name, objectId: mainFrame.guid, pageId: mainFrame._page.guid, @@ -143,9 +204,132 @@ export function callMetadataForAction(pageAliases: Map, actionInCo startTime: monotonicTime(), endTime: 0, type: 'Frame', - method: action.name, - params: traceParamsForAction(actionInContext), + method, + params, log: [], }; return { callMetadata, mainFrame }; } + +export function traceEventsToAction(events: trace.TraceEvent[]): ActionInContext[] { + const result: ActionInContext[] = []; + for (const event of events) { + if (event.type !== 'before') + continue; + if (!event.stepId?.startsWith('recorder@')) + continue; + + if (event.method === 'goto') { + result.push({ + frame: { pageAlias: 'page', framePath: [] }, + action: { + name: 'navigate', + url: event.params.url, + signals: [], + }, + timestamp: event.startTime, + }); + continue; + } + if (event.method === 'click') { + result.push({ + frame: { pageAlias: 'page', framePath: [] }, + action: { + name: 'click', + selector: event.params.selector, + signals: [], + button: event.params.button, + modifiers: fromKeyboardModifiers(event.params.modifiers), + clickCount: event.params.clickCount, + position: event.params.position, + }, + timestamp: event.startTime + }); + continue; + } + if (event.method === 'fill') { + result.push({ + frame: { pageAlias: 'page', framePath: [] }, + action: { + name: 'fill', + selector: event.params.selector, + signals: [], + text: event.params.value, + }, + timestamp: event.startTime + }); + continue; + } + if (event.method === 'press') { + const tokens = event.params.key.split('+'); + const modifiers = tokens.slice(0, tokens.length - 1); + const key = tokens[tokens.length - 1]; + result.push({ + frame: { pageAlias: 'page', framePath: [] }, + action: { + name: 'press', + selector: event.params.selector, + signals: [], + key, + modifiers: fromKeyboardModifiers(modifiers), + }, + timestamp: event.startTime + }); + continue; + } + if (event.method === 'check') { + result.push({ + frame: { pageAlias: 'page', framePath: [] }, + action: { + name: 'check', + selector: event.params.selector, + signals: [], + }, + timestamp: event.startTime + }); + continue; + } + if (event.method === 'uncheck') { + result.push({ + frame: { pageAlias: 'page', framePath: [] }, + action: { + name: 'uncheck', + selector: event.params.selector, + signals: [], + }, + timestamp: event.startTime + }); + continue; + } + if (event.method === 'selectOption') { + result.push({ + frame: { pageAlias: 'page', framePath: [] }, + action: { + name: 'select', + selector: event.params.selector, + signals: [], + options: event.params.options.map((option: any) => option.value), + }, + timestamp: event.startTime + }); + continue; + } + } + return result; +} + +export function collapseActions(actions: ActionInContext[]): ActionInContext[] { + const result: ActionInContext[] = []; + for (const action of actions) { + const lastAction = result[result.length - 1]; + const isSameAction = lastAction && lastAction.action.name === action.action.name && lastAction.frame.pageAlias === action.frame.pageAlias && lastAction.frame.framePath.join('|') === action.frame.framePath.join('|'); + const isSameSelector = lastAction && 'selector' in lastAction.action && 'selector' in action.action && action.action.selector === lastAction.action.selector; + const shouldMerge = isSameAction && (action.action.name === 'navigate' || (action.action.name === 'fill' && isSameSelector)); + if (!shouldMerge) { + result.push(action); + continue; + } + result[result.length - 1] = action; + } + return result; +} diff --git a/packages/playwright-core/src/server/trace/recorder/tracing.ts b/packages/playwright-core/src/server/trace/recorder/tracing.ts index b09bbe3134..25437e53a2 100644 --- a/packages/playwright-core/src/server/trace/recorder/tracing.ts +++ b/packages/playwright-core/src/server/trace/recorder/tracing.ts @@ -46,6 +46,7 @@ export type TracerOptions = { snapshots?: boolean; screenshots?: boolean; live?: boolean; + inMemory?: boolean; }; type RecordingState = { @@ -79,6 +80,7 @@ export class Tracing extends SdkObject implements InstrumentationListener, Snaps private _allResources = new Set(); private _contextCreatedEvent: trace.ContextCreatedTraceEvent; private _pendingHarEntries = new Set(); + private _inMemoryEvents: trace.TraceEvent[] | undefined; constructor(context: BrowserContext | APIRequestContext, tracesDir: string | undefined) { super(context, 'tracing'); @@ -153,6 +155,7 @@ export class Tracing extends SdkObject implements InstrumentationListener, Snaps // Tracing is 10x bigger if we include scripts in every trace. if (options.snapshots) this._harTracer.start({ omitScripts: !options.live }); + this._inMemoryEvents = options.inMemory ? [] : undefined; } async startChunk(options: { name?: string, title?: string } = {}): Promise<{ traceName: string }> { @@ -179,7 +182,7 @@ export class Tracing extends SdkObject implements InstrumentationListener, Snaps wallTime: Date.now(), monotonicTime: monotonicTime() }; - this._fs.appendFile(this._state.traceFile, JSON.stringify(event) + '\n'); + this._appendTraceEvent(event); this._context.instrumentation.addListener(this, this._context); this._eventListeners.push( @@ -193,6 +196,10 @@ export class Tracing extends SdkObject implements InstrumentationListener, Snaps return { traceName: this._state.traceName }; } + inMemoryEvents(): trace.TraceEvent[] { + return this._inMemoryEvents || []; + } + private _startScreencast() { if (!(this._context instanceof BrowserContext)) return; @@ -487,6 +494,8 @@ export class Tracing extends SdkObject implements InstrumentationListener, Snaps // Do not flush (console) events, they are too noisy, unless we are in ui mode (live). const flush = this._state!.options.live || (event.type !== 'event' && event.type !== 'console' && event.type !== 'log'); this._fs.appendFile(this._state!.traceFile, JSON.stringify(visited) + '\n', flush); + if (this._inMemoryEvents) + this._inMemoryEvents.push(event); } private _appendResource(sha1: string, buffer: Buffer) { diff --git a/packages/playwright-core/src/server/trace/viewer/traceViewer.ts b/packages/playwright-core/src/server/trace/viewer/traceViewer.ts index 6ca0319aa3..78848142a8 100644 --- a/packages/playwright-core/src/server/trace/viewer/traceViewer.ts +++ b/packages/playwright-core/src/server/trace/viewer/traceViewer.ts @@ -178,6 +178,7 @@ export async function openTraceViewerApp(url: string, browserName: string, optio ...options?.persistentContextOptions, useWebSocket: isUnderTest(), headless: !!options?.headless, + args: process.env.PWTEST_RECORDER_PORT ? [`--remote-debugging-port=${process.env.PWTEST_RECORDER_PORT}`] : [], }, }); diff --git a/packages/trace-viewer/src/traceModel.ts b/packages/trace-viewer/src/traceModel.ts index 1248dde967..87a3d42491 100644 --- a/packages/trace-viewer/src/traceModel.ts +++ b/packages/trace-viewer/src/traceModel.ts @@ -73,6 +73,7 @@ export class TraceModel { unzipProgress(++done, total); contextEntry.actions = modernizer.actions().sort((a1, a2) => a1.startTime - a2.startTime); + if (!backend.isLive()) { // Terminate actions w/o after event gracefully. // This would close after hooks event that has not been closed because diff --git a/packages/trace-viewer/src/ui/recorderView.tsx b/packages/trace-viewer/src/ui/recorderView.tsx index 940fd146a9..4d8ec8d297 100644 --- a/packages/trace-viewer/src/ui/recorderView.tsx +++ b/packages/trace-viewer/src/ui/recorderView.tsx @@ -45,6 +45,8 @@ export const RecorderView: React.FunctionComponent = () => { connection.setMode('recording'); }, [connection]); + window.playwrightSourcesEchoForTest = sources; + return

({ await run(async () => { while (!toImpl(context).recorderAppForTest) await new Promise(f => setTimeout(f, 100)); - const wsEndpoint = toImpl(context).recorderAppForTest.wsEndpoint; + const wsEndpoint = toImpl(context).recorderAppForTest.wsEndpointForTest; const browser = await playwrightToAutomateInspector.chromium.connectOverCDP({ wsEndpoint }); const c = browser.contexts()[0]; return c.pages()[0] || await c.waitForEvent('page'); From 443f72dcbe35548aef097c80aebc39f857b86818 Mon Sep 17 00:00:00 2001 From: Simon Knott Date: Wed, 18 Sep 2024 08:17:13 +0200 Subject: [PATCH 012/151] feat(watch): hide show-report prompt (#32666) Closes https://github.com/microsoft/playwright/issues/32665 --- packages/playwright/src/reporters/html.ts | 2 +- tests/playwright-test/watch.spec.ts | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/packages/playwright/src/reporters/html.ts b/packages/playwright/src/reporters/html.ts index fd1fb0cbdf..5aada7e495 100644 --- a/packages/playwright/src/reporters/html.ts +++ b/packages/playwright/src/reporters/html.ts @@ -143,7 +143,7 @@ class HtmlReporter implements ReporterV2 { const shouldOpen = !this._options._isTestServer && (this._open === 'always' || (!ok && this._open === 'on-failure')); if (shouldOpen) { await showHTMLReport(this._outputFolder, this._host, this._port, singleTestId); - } else if (this._options._mode === 'test') { + } else if (this._options._mode === 'test' && !this._options._isTestServer) { const packageManagerCommand = getPackageManagerExecCommand(); const relativeReportPath = this._outputFolder === standaloneDefaultFolder() ? '' : ' ' + path.relative(process.cwd(), this._outputFolder); const hostArg = this._host ? ` --host ${this._host}` : ''; diff --git a/tests/playwright-test/watch.spec.ts b/tests/playwright-test/watch.spec.ts index b56fb470ea..4f687f72fc 100644 --- a/tests/playwright-test/watch.spec.ts +++ b/tests/playwright-test/watch.spec.ts @@ -215,6 +215,24 @@ test('should run tests on Enter', async ({ runWatchTest }) => { await testProcess.waitForOutput('Waiting for file changes.'); }); +test('should not print show-report command of HTML reporter', async ({ runWatchTest }) => { + const testProcess = await runWatchTest({ + 'a.test.ts': ` + import { test, expect } from '@playwright/test'; + test('passes', () => {}); + `, + 'playwright.config.ts': ` + import { defineConfig } from '@playwright/test'; + export default defineConfig({ reporter: 'html' }); + `, + }); + await testProcess.waitForOutput('Waiting for file changes.'); + testProcess.clearOutput(); + testProcess.write('\r\n'); + await testProcess.waitForOutput('Waiting for file changes.'); + expect(testProcess.output).not.toContain('To open last HTML report run:'); +}); + test('should run tests on R', async ({ runWatchTest }) => { const testProcess = await runWatchTest({ 'a.test.ts': ` From 8a970508227ae69783b1ff7e43e21cbc5bc55052 Mon Sep 17 00:00:00 2001 From: Simon Knott Date: Wed, 18 Sep 2024 08:18:47 +0200 Subject: [PATCH 013/151] feat(har): record `securityDetails` for API Requests (#32664) While working on https://github.com/microsoft/playwright/pull/32658 I discovered that we're recording `securityDetails` for browser requests, but not for API requests. This PR fixes that. --- packages/playwright-core/src/server/fetch.ts | 20 ++++++++++++++++++- .../src/server/har/harTracer.ts | 3 +++ tests/library/har.spec.ts | 3 +++ 3 files changed, 25 insertions(+), 1 deletion(-) diff --git a/packages/playwright-core/src/server/fetch.ts b/packages/playwright-core/src/server/fetch.ts index 2aa7f27fee..6c14b625fe 100644 --- a/packages/playwright-core/src/server/fetch.ts +++ b/packages/playwright-core/src/server/fetch.ts @@ -41,6 +41,7 @@ import type * as types from './types'; import type { HeadersArray, ProxySettings } from './types'; import { getMatchingTLSOptionsForOrigin, rewriteOpenSSLErrorIfNeeded } from './socksClientCertificatesInterceptor'; import type * as har from '@trace/har'; +import { TLSSocket } from 'tls'; type FetchRequestOptions = { userAgent: string; @@ -73,6 +74,7 @@ export type APIRequestFinishedEvent = { statusMessage: string; body?: Buffer; timings: har.Timings; + securityDetails?: har.SecurityDetails; }; type SendRequestOptions = https.RequestOptions & { @@ -303,6 +305,8 @@ export abstract class APIRequestContext extends SdkObject { let tlsHandshakeAt: number | undefined; let requestFinishAt: number | undefined; + let securityDetails: har.SecurityDetails | undefined; + const request = requestConstructor(url, requestOptions as any, async response => { const responseAt = monotonicTime(); const notifyRequestFinished = (body?: Buffer) => { @@ -328,6 +332,7 @@ export abstract class APIRequestContext extends SdkObject { cookies, body, timings, + securityDetails, }; this.emit(APIRequestContext.Events.RequestFinished, requestFinishedEvent); }; @@ -482,7 +487,20 @@ export abstract class APIRequestContext extends SdkObject { // non-happy-eyeballs sockets socket.on('lookup', () => { dnsLookupAt = monotonicTime(); }); socket.on('connect', () => { tcpConnectionAt = monotonicTime(); }); - socket.on('secureConnect', () => { tlsHandshakeAt = monotonicTime(); }); + socket.on('secureConnect', () => { + tlsHandshakeAt = monotonicTime(); + + if (socket instanceof TLSSocket) { + const peerCertificate = socket.getPeerCertificate(); + securityDetails = { + protocol: socket.getProtocol() ?? undefined, + subjectName: peerCertificate.subject.CN, + validFrom: new Date(peerCertificate.valid_from).getTime() / 1000, + validTo: new Date(peerCertificate.valid_to).getTime() / 1000, + issuer: peerCertificate.issuer.CN + }; + } + }); }); request.on('finish', () => { requestFinishAt = monotonicTime(); }); diff --git a/packages/playwright-core/src/server/har/harTracer.ts b/packages/playwright-core/src/server/har/harTracer.ts index 76da6682d4..197b640086 100644 --- a/packages/playwright-core/src/server/har/harTracer.ts +++ b/packages/playwright-core/src/server/har/harTracer.ts @@ -218,6 +218,9 @@ export class HarTracer { this._computeHarEntryTotalTime(harEntry); } + if (!this._options.omitSecurityDetails) + harEntry._securityDetails = event.securityDetails; + for (let i = 0; i < event.rawHeaders.length; i += 2) { harEntry.response.headers.push({ name: event.rawHeaders[i], diff --git a/tests/library/har.spec.ts b/tests/library/har.spec.ts index 2b7dab4262..f46854d049 100644 --- a/tests/library/har.spec.ts +++ b/tests/library/har.spec.ts @@ -610,6 +610,7 @@ it('should have security details', async ({ contextFactory, httpsServer, browser const { page, getLog } = await pageWithHar(contextFactory, testInfo); await page.goto(httpsServer.EMPTY_PAGE); + await page.request.get(httpsServer.EMPTY_PAGE); const log = await getLog(); const { serverIPAddress, _serverPort: port, _securityDetails: securityDetails } = log.entries[0]; if (!mode.startsWith('service')) { @@ -620,6 +621,8 @@ it('should have security details', async ({ contextFactory, httpsServer, browser expect(securityDetails).toEqual({ protocol: 'TLS 1.3', subjectName: 'playwright-test', validFrom: 1691708270, validTo: 2007068270 }); else expect(securityDetails).toEqual({ issuer: 'playwright-test', protocol: 'TLS 1.3', subjectName: 'playwright-test', validFrom: 1691708270, validTo: 2007068270 }); + + expect(log.entries[1]._securityDetails).toEqual({ issuer: 'playwright-test', protocol: 'TLSv1.3', subjectName: 'playwright-test', validFrom: 1691708270, validTo: 2007068270 }); }); it('should have connection details for redirects', async ({ contextFactory, server, browserName, mode }, testInfo) => { From 4460c987103f2b6f22d29b546888f8ed9cf8ac9e Mon Sep 17 00:00:00 2001 From: Simon Knott Date: Wed, 18 Sep 2024 08:21:10 +0200 Subject: [PATCH 014/151] fix(har tracing): record `response.bodySize` for API requests (#32656) A small drive-by that came out of working on https://github.com/microsoft/playwright/issues/32653. --- packages/playwright-core/src/server/har/harTracer.ts | 2 ++ tests/library/har.spec.ts | 2 ++ 2 files changed, 4 insertions(+) diff --git a/packages/playwright-core/src/server/har/harTracer.ts b/packages/playwright-core/src/server/har/harTracer.ts index 197b640086..448e511242 100644 --- a/packages/playwright-core/src/server/har/harTracer.ts +++ b/packages/playwright-core/src/server/har/harTracer.ts @@ -239,6 +239,8 @@ export class HarTracer { if (contentType) content.mimeType = contentType; this._storeResponseContent(event.body, content, 'other'); + if (!this._options.omitSizes) + harEntry.response.bodySize = event.body?.length ?? 0; if (this._started) this._delegate.onEntryFinished(harEntry); diff --git a/tests/library/har.spec.ts b/tests/library/har.spec.ts index f46854d049..021d79ff4c 100644 --- a/tests/library/har.spec.ts +++ b/tests/library/har.spec.ts @@ -823,6 +823,7 @@ it('should include API request', async ({ contextFactory, server }, testInfo) => expect(entry.response.headers.find(h => h.name.toLowerCase() === 'content-type')?.value).toContain('application/json'); expect(entry.response.content.size).toBe(15); expect(entry.response.content.text).toBe(responseBody.toString()); + expect(entry.response.bodySize).toBe(15); expect(entry.time).toBeGreaterThan(0); expect(entry.timings).toEqual(expect.objectContaining({ @@ -849,6 +850,7 @@ it('should respect minimal mode for API Requests', async ({ contextFactory, serv expect(entry.timings).toEqual({ receive: -1, send: -1, wait: -1 }); expect(entry.request.cookies).toEqual([]); expect(entry.request.bodySize).toBe(-1); + expect(entry.response.bodySize).toBe(-1); }); it('should include redirects from API request', async ({ contextFactory, server }, testInfo) => { From 9fc195bff5cd4a5dcb4337d8c9a4400683c9c62b Mon Sep 17 00:00:00 2001 From: Max Schmitt Date: Wed, 18 Sep 2024 11:08:17 +0200 Subject: [PATCH 015/151] test: update cookie expectations for macOS 15 (#32674) --- tests/config/browserTest.ts | 10 +++++++--- tests/library/browsercontext-cookies.spec.ts | 3 ++- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/tests/config/browserTest.ts b/tests/config/browserTest.ts index 44aaca9d26..c301233e07 100644 --- a/tests/config/browserTest.ts +++ b/tests/config/browserTest.ts @@ -69,12 +69,16 @@ const test = baseTest.extend await run(false); }, { scope: 'worker' }], - defaultSameSiteCookieValue: [async ({ browserName, isLinux }, run) => { + defaultSameSiteCookieValue: [async ({ browserName, platform }, run) => { if (browserName === 'chromium' || browserName as any === '_bidiChromium') await run('Lax'); - else if (browserName === 'webkit' && isLinux) + else if (browserName === 'webkit' && platform === 'linux') await run('Lax'); - else if (browserName === 'webkit' && !isLinux) + else if (browserName === 'webkit' && platform === 'darwin' && parseInt(os.release(), 10) >= 24) + // macOS 15 Sequoia onwards + await run('Lax'); + else if (browserName === 'webkit') + // Windows + older macOS await run('None'); else if (browserName === 'firefox' || browserName as any === '_bidiFirefox') await run('None'); diff --git a/tests/library/browsercontext-cookies.spec.ts b/tests/library/browsercontext-cookies.spec.ts index df923ef3ff..f0aabb7139 100644 --- a/tests/library/browsercontext-cookies.spec.ts +++ b/tests/library/browsercontext-cookies.spec.ts @@ -15,6 +15,7 @@ * limitations under the License. */ +import os from 'os'; import { contextTest as it, expect } from '../config/browserTest'; it('should return no cookies in pristine browser context', async ({ context, page, server }) => { @@ -396,7 +397,7 @@ it('should support requestStorageAccess', async ({ page, server, channel, browse server.waitForRequest('/title.html'), frame.evaluate(() => fetch('/title.html')) ]); - if (isLinux && browserName === 'webkit') + if ((isLinux || (isMac && parseInt(os.release(), 10) >= 24)) && browserName === 'webkit') expect(serverRequest.headers.cookie).toBe(undefined); else expect(serverRequest.headers.cookie).toBe('name=value'); From 4c31a8289f7d29c438f4efd140e76e0a2b6926a5 Mon Sep 17 00:00:00 2001 From: Max Schmitt Date: Wed, 18 Sep 2024 14:35:11 +0200 Subject: [PATCH 016/151] feat(trace-viewer): add network requests 'copy as cURL' button (#32627) --- .../trace-viewer/src/third_party/devtools.ts | 285 ++++++++++++++++++ packages/trace-viewer/src/ui/DEPS.list | 1 + .../trace-viewer/src/ui/copyToClipboard.tsx | 19 +- .../src/ui/networkResourceDetails.css | 9 + .../src/ui/networkResourceDetails.tsx | 9 + packages/web/src/components/toolbarButton.tsx | 6 +- 6 files changed, 317 insertions(+), 12 deletions(-) create mode 100644 packages/trace-viewer/src/third_party/devtools.ts diff --git a/packages/trace-viewer/src/third_party/devtools.ts b/packages/trace-viewer/src/third_party/devtools.ts new file mode 100644 index 0000000000..27c520cbce --- /dev/null +++ b/packages/trace-viewer/src/third_party/devtools.ts @@ -0,0 +1,285 @@ +// Copyright 2014 The Chromium Authors. All rights reserved. +// Modifications copyright (c) Microsoft Corporation. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +/* + * Copyright (C) 2007, 2008 Apple Inc. All rights reserved. + * Copyright (C) 2008, 2009 Anthony Ricaud + * Copyright (C) 2011 Google Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +import type { Entry } from '@trace/har'; + +// The following function is derived from Chromium's source code +// https://github.com/ChromeDevTools/devtools-frontend/blob/83cbe41b4107e188a1f66fdf6ea3a9cca42587c6/front_end/panels/network/NetworkLogView.ts#L2363 +export async function generateCurlCommand(resource: Entry): Promise { + const platform = navigator.platform.includes('Win') ? 'win' : 'unix'; + let command: string[] = []; + // Most of these headers are derived from the URL and are automatically added by cURL. + // The |Accept-Encoding| header is ignored to prevent decompression errors. crbug.com/1015321 + const ignoredHeaders = + new Set(['accept-encoding', 'host', 'method', 'path', 'scheme', 'version', 'authority', 'protocol']); + + function escapeStringWin(str: string): string { + /* Always escape the " characters so that we can use caret escaping. + + Because cmd.exe parser and MS Crt arguments parsers use some of the + same escape characters, they can interact with each other in + horrible ways, the order of operations is critical. + + Replace \ with \\ first because it is an escape character for certain + conditions in both parsers. + + Replace all " with \" to ensure the first parser does not remove it. + + Then escape all characters we are not sure about with ^ to ensure it + gets to MS Crt parser safely. + + The % character is special because MS Crt parser will try and look for + ENV variables and fill them in its place. We cannot escape them with % + and cannot escape them with ^ (because it's cmd.exe's escape not MS Crt + parser); So we can get cmd.exe parser to escape the character after it, + if it is followed by a valid beginning character of an ENV variable. + This ensures we do not try and double escape another ^ if it was placed + by the previous replace. + + Lastly we replace new lines with ^ and TWO new lines because the first + new line is there to enact the escape command the second is the character + to escape (in this case new line). + */ + const encapsChars = '^"'; + return encapsChars + + str.replace(/\\/g, '\\\\') + .replace(/"/g, '\\"') + .replace(/[^a-zA-Z0-9\s_\-:=+~'\/.',?;()*`]/g, '^$&') + .replace(/%(?=[a-zA-Z0-9_])/g, '%^') + .replace(/\r?\n/g, '^\n\n') + + encapsChars; + } + + function escapeStringPosix(str: string): string { + function escapeCharacter(x: string): string { + const code = x.charCodeAt(0); + let hexString = code.toString(16); + // Zero pad to four digits to comply with ANSI-C Quoting: + // http://www.gnu.org/software/bash/manual/html_node/ANSI_002dC-Quoting.html + while (hexString.length < 4) + hexString = '0' + hexString; + + + return '\\u' + hexString; + } + + if (/[\0-\x1F\x7F-\x9F!]|\'/.test(str)) { + // Use ANSI-C quoting syntax. + return '$\'' + + str.replace(/\\/g, '\\\\') + .replace(/\'/g, '\\\'') + .replace(/\n/g, '\\n') + .replace(/\r/g, '\\r') + .replace(/[\0-\x1F\x7F-\x9F!]/g, escapeCharacter) + + '\''; + } + // Use single quote syntax. + return '\'' + str + '\''; + } + + // cURL command expected to run on the same platform that DevTools run + // (it may be different from the inspected page platform). + const escapeString = platform === 'win' ? escapeStringWin : escapeStringPosix; + + command.push(escapeString(resource.request.url).replace(/[[{}\]]/g, '\\$&')); + + let inferredMethod = 'GET'; + const data = []; + const formData = await fetchRequestPostData(resource); + if (formData) { + // Note that formData is not necessarily urlencoded because it might for example + // come from a fetch request made with an explicitly unencoded body. + data.push('--data-raw ' + escapeString(formData)); + ignoredHeaders.add('content-length'); + inferredMethod = 'POST'; + } + + if (resource.request.method !== inferredMethod) + command.push('-X ' + escapeString(resource.request.method)); + + + const requestHeaders = resource.request.headers; + for (let i = 0; i < requestHeaders.length; i++) { + const header = requestHeaders[i]; + const name = header.name.replace(/^:/, ''); // Translate SPDY v3 headers to HTTP headers. + if (ignoredHeaders.has(name.toLowerCase())) + continue; + + if (header.value.trim()) { + command.push('-H ' + escapeString(name + ': ' + header.value)); + } else { + // A header passed with -H with no value or only whitespace as its + // value tells curl to not set the header at all. To post an empty + // header, you have to terminate it with a semicolon. + command.push('-H ' + escapeString(name + ';')); + } + } + command = command.concat(data); + + return 'curl ' + command.join(command.length >= 3 ? (platform === 'win' ? ' ^\n ' : ' \\\n ') : ' '); +} + +const enum FetchStyle { + BROWSER = 0, + NODE_JS = 1, +} + +export async function generateFetchCall(resource: Entry, style: FetchStyle = FetchStyle.BROWSER): Promise { + const ignoredHeaders = new Set([ + // Internal headers + 'method', + 'path', + 'scheme', + 'version', + + // Unsafe headers + // Keep this list synchronized with src/net/http/http_util.cc + 'accept-charset', + 'accept-encoding', + 'access-control-request-headers', + 'access-control-request-method', + 'connection', + 'content-length', + 'cookie', + 'cookie2', + 'date', + 'dnt', + 'expect', + 'host', + 'keep-alive', + 'origin', + 'referer', + 'te', + 'trailer', + 'transfer-encoding', + 'upgrade', + 'via', + // TODO(phistuck) - remove this once crbug.com/571722 is fixed. + 'user-agent', + ]); + + const credentialHeaders = new Set(['cookie', 'authorization']); + + const url = JSON.stringify(resource.request.url); + + const requestHeaders = resource.request.headers; + const headerData: Headers = requestHeaders.reduce((result, header) => { + const name = header.name; + + if (!ignoredHeaders.has(name.toLowerCase()) && !name.includes(':')) + result.append(name, header.value); + + + return result; + }, new Headers()); + + const headers: HeadersInit = {}; + for (const headerArray of headerData) + headers[headerArray[0]] = headerArray[1]; + + + const credentials = resource.request.cookies.length || + requestHeaders.some(({ name }) => credentialHeaders.has(name.toLowerCase())) ? + 'include' : + 'omit'; + + const referrerHeader = requestHeaders.find(({ name }) => name.toLowerCase() === 'referer'); + + const referrer = referrerHeader ? referrerHeader.value : void 0; + + const requestBody = await fetchRequestPostData(resource); + + const fetchOptions: RequestInit = { + headers: Object.keys(headers).length ? headers : void 0, + referrer, + body: requestBody, + method: resource.request.method, + mode: 'cors', + }; + + if (style === FetchStyle.NODE_JS) { + const cookieHeader = requestHeaders.find(header => header.name.toLowerCase() === 'cookie'); + const extraHeaders: HeadersInit = {}; + // According to https://www.npmjs.com/package/node-fetch#class-request the + // following properties are not implemented in Node.js. + delete fetchOptions.mode; + if (cookieHeader) + extraHeaders['cookie'] = cookieHeader.value; + + if (referrer) { + delete fetchOptions.referrer; + extraHeaders['Referer'] = referrer; + } + if (Object.keys(extraHeaders).length) { + fetchOptions.headers = { + ...headers, + ...extraHeaders, + }; + } + } else { + fetchOptions.credentials = credentials; + } + + const options = JSON.stringify(fetchOptions, null, 2); + return `fetch(${url}, ${options});`; +} + +async function fetchRequestPostData(resource: Entry) { + return resource.request.postData?._sha1 ? await fetch(`sha1/${resource.request.postData._sha1}`).then(r => r.text()) : resource.request.postData?.text; +} \ No newline at end of file diff --git a/packages/trace-viewer/src/ui/DEPS.list b/packages/trace-viewer/src/ui/DEPS.list index 3fab0da95b..0056375c05 100644 --- a/packages/trace-viewer/src/ui/DEPS.list +++ b/packages/trace-viewer/src/ui/DEPS.list @@ -6,3 +6,4 @@ ../entries.ts ../geometry.ts ../../../playwright/src/isomorphic/** +../third_party/devtools.ts diff --git a/packages/trace-viewer/src/ui/copyToClipboard.tsx b/packages/trace-viewer/src/ui/copyToClipboard.tsx index 3e570ede56..301be3dd03 100644 --- a/packages/trace-viewer/src/ui/copyToClipboard.tsx +++ b/packages/trace-viewer/src/ui/copyToClipboard.tsx @@ -18,19 +18,22 @@ import * as React from 'react'; import { ToolbarButton } from '@web/components/toolbarButton'; export const CopyToClipboard: React.FunctionComponent<{ - value: string, + value: string | (() => Promise), description?: string, }> = ({ value, description }) => { const [icon, setIcon] = React.useState('copy'); const handleCopy = React.useCallback(() => { - navigator.clipboard.writeText(value).then(() => { - setIcon('check'); - setTimeout(() => { - setIcon('copy'); - }, 3000); - }, () => { - setIcon('close'); + const valuePromise = typeof value === 'function' ? value() : Promise.resolve(value); + valuePromise.then(value => { + navigator.clipboard.writeText(value).then(() => { + setIcon('check'); + setTimeout(() => { + setIcon('copy'); + }, 3000); + }, () => { + setIcon('close'); + }); }); }, [value]); diff --git a/packages/trace-viewer/src/ui/networkResourceDetails.css b/packages/trace-viewer/src/ui/networkResourceDetails.css index 59989b89dd..ac1245f70d 100644 --- a/packages/trace-viewer/src/ui/networkResourceDetails.css +++ b/packages/trace-viewer/src/ui/networkResourceDetails.css @@ -49,6 +49,15 @@ overflow: hidden; } +.network-request-details-copy { + display: flex; + margin-left: 10px; +} + +.network-request-details-copy button { + border-radius: 4px +} + .network-font-preview { font-family: font-preview; font-size: 30px; diff --git a/packages/trace-viewer/src/ui/networkResourceDetails.tsx b/packages/trace-viewer/src/ui/networkResourceDetails.tsx index 8df091b262..1f9fcc4581 100644 --- a/packages/trace-viewer/src/ui/networkResourceDetails.tsx +++ b/packages/trace-viewer/src/ui/networkResourceDetails.tsx @@ -20,6 +20,8 @@ import './networkResourceDetails.css'; import { TabbedPane } from '@web/components/tabbedPane'; import { CodeMirrorWrapper } from '@web/components/codeMirrorWrapper'; import { ToolbarButton } from '@web/components/toolbarButton'; +import { generateCurlCommand, generateFetchCall } from '../third_party/devtools'; +import { CopyToClipboard } from './copyToClipboard'; export const NetworkResourceDetails: React.FunctionComponent<{ resource: ResourceSnapshot; @@ -90,6 +92,13 @@ const RequestTab: React.FunctionComponent<{ : null}
Request Headers
{resource.request.headers.map(pair => `${pair.name}: ${pair.value}`).join('\n')}
+
Copy Request
+
+ As cURL: generateCurlCommand(resource)}/> +
+
+ As Fetch: generateFetchCall(resource)}/> +
{requestBody &&
Request Body
} {requestBody && }
; diff --git a/packages/web/src/components/toolbarButton.tsx b/packages/web/src/components/toolbarButton.tsx index 455f0979f0..00b9babd59 100644 --- a/packages/web/src/components/toolbarButton.tsx +++ b/packages/web/src/components/toolbarButton.tsx @@ -17,6 +17,7 @@ import './toolbarButton.css'; import '../third_party/vscode/codicon.css'; import * as React from 'react'; +import { clsx } from '@web/uiUtils'; export interface ToolbarButtonProps { title: string, @@ -40,11 +41,8 @@ export const ToolbarButton: React.FC testId, className, }) => { - className = (className || '') + ` toolbar-button ${icon}`; - if (toggled) - className += ' toggled'; return `); @@ -52,8 +52,8 @@ await page.GetByRole(AriaRole.Button, new() { Name = "Submit" }).ClickAsync();`) expect(message.text()).toBe('click'); }); - test('should double click', async ({ page, openRecorder }) => { - const recorder = await openRecorder(); + test('should double click', async ({ openRecorder }) => { + const { page, recorder } = await openRecorder(); await recorder.setContentAndWait(``); @@ -93,8 +93,8 @@ await page.GetByRole(AriaRole.Button, new() { Name = "Submit" }).DblClickAsync() ]); }); - test('should ignore programmatic events', async ({ page, openRecorder }) => { - const recorder = await openRecorder(); + test('should ignore programmatic events', async ({ openRecorder }) => { + const { page, recorder } = await openRecorder(); await recorder.setContentAndWait(``); @@ -113,8 +113,8 @@ await page.GetByRole(AriaRole.Button, new() { Name = "Submit" }).DblClickAsync() expect(clicks.length).toBe(1); }); - test('should click after same-document navigation', async ({ page, openRecorder, server }) => { - const recorder = await openRecorder(); + test('should click after same-document navigation', async ({ openRecorder, server }) => { + const { page, recorder } = await openRecorder(); server.setRoute('/foo.html', (req, res) => { res.setHeader('Content-Type', 'text/html; charset=utf-8'); @@ -143,8 +143,8 @@ await page.GetByRole(AriaRole.Button, new() { Name = "Submit" }).DblClickAsync() expect(message.text()).toBe('click'); }); - test('should make a positioned click on a canvas', async ({ page, openRecorder }) => { - const recorder = await openRecorder(); + test('should make a positioned click on a canvas', async ({ openRecorder }) => { + const { page, recorder } = await openRecorder(); await recorder.setContentAndWait(` @@ -196,8 +196,8 @@ await page.Locator("canvas").ClickAsync(new LocatorClickOptions expect(message.text()).toBe('click 250 250'); }); - test('should work with TrustedTypes', async ({ page, openRecorder }) => { - const recorder = await openRecorder(); + test('should work with TrustedTypes', async ({ openRecorder }) => { + const { page, recorder } = await openRecorder(); await recorder.setContentAndWait(` @@ -234,8 +234,8 @@ await page.GetByRole(AriaRole.Button, new() { Name = "Submit" }).ClickAsync();`) expect(message.text()).toBe('click'); }); - test('should not target selector preview by text regexp', async ({ page, openRecorder }) => { - const recorder = await openRecorder(); + test('should not target selector preview by text regexp', async ({ openRecorder }) => { + const { page, recorder } = await openRecorder(); await recorder.setContentAndWait(`dummy`); @@ -265,8 +265,8 @@ await page.GetByRole(AriaRole.Button, new() { Name = "Submit" }).ClickAsync();`) expect(message.text()).toBe('click'); }); - test('should fill', async ({ page, openRecorder }) => { - const recorder = await openRecorder(); + test('should fill', async ({ openRecorder }) => { + const { page, recorder } = await openRecorder(); await recorder.setContentAndWait(``); const locator = await recorder.focusElement('input'); @@ -295,8 +295,8 @@ await page.Locator("#input").FillAsync(\"John\");`); expect(message.text()).toBe('John'); }); - test('should fill japanese text', async ({ page, openRecorder }) => { - const recorder = await openRecorder(); + test('should fill japanese text', async ({ openRecorder }) => { + const { page, recorder } = await openRecorder(); // In Japanese, "てすと" or "テスト" means "test". await recorder.setContentAndWait(``); @@ -329,8 +329,8 @@ await page.Locator("#input").FillAsync(\"てすと\");`); expect(message.text()).toBe('てすと'); }); - test('should fill textarea', async ({ page, openRecorder }) => { - const recorder = await openRecorder(); + test('should fill textarea', async ({ openRecorder }) => { + const { page, recorder } = await openRecorder(); await recorder.setContentAndWait(``); const locator = await recorder.focusElement('textarea'); @@ -346,9 +346,9 @@ await page.Locator("#input").FillAsync(\"てすと\");`); expect(message.text()).toBe('John'); }); - test('should fill textarea with new lines at the end', async ({ page, openRecorder }) => { + test('should fill textarea with new lines at the end', async ({ openRecorder }) => { test.info().annotations.push({ type: 'issue', description: 'https://github.com/microsoft/playwright/issues/23774' }); - const recorder = await openRecorder(); + const { page, recorder } = await openRecorder(); await recorder.setContentAndWait(``); const textarea = page.locator('textarea'); await textarea.evaluate(e => e.addEventListener('input', () => (window as any).lastInputValue = e.value)); @@ -361,8 +361,8 @@ await page.Locator("#input").FillAsync(\"てすと\");`); expect(sources.get('JavaScript')!.text).not.toContain(`Enter`); }); - test('should fill [contentEditable]', async ({ page, openRecorder }) => { - const recorder = await openRecorder(); + test('should fill [contentEditable]', async ({ openRecorder }) => { + const { page, recorder } = await openRecorder(); await recorder.setContentAndWait(`
`); const locator = await recorder.focusElement('div'); @@ -378,8 +378,8 @@ await page.Locator("#input").FillAsync(\"てすと\");`); expect(message.text()).toBe('John Doe'); }); - test('should press', async ({ page, openRecorder }) => { - const recorder = await openRecorder(); + test('should press', async ({ openRecorder }) => { + const { page, recorder } = await openRecorder(); await recorder.setContentAndWait(``); @@ -412,8 +412,8 @@ await page.GetByRole(AriaRole.Textbox).PressAsync("Shift+Enter");`); expect(messages[0].text()).toBe('press'); }); - test('should update selected element after pressing Tab', async ({ page, openRecorder }) => { - const recorder = await openRecorder(); + test('should update selected element after pressing Tab', async ({ openRecorder }) => { + const { page, recorder } = await openRecorder(); await recorder.setContentAndWait(` @@ -441,8 +441,8 @@ await page.GetByRole(AriaRole.Textbox).PressAsync("Shift+Enter");`); await page.locator('input[name="two"]').fill('barfoo321');`); }); - test('should record ArrowDown', async ({ page, openRecorder }) => { - const recorder = await openRecorder(); + test('should record ArrowDown', async ({ openRecorder }) => { + const { page, recorder } = await openRecorder(); await recorder.setContentAndWait(``); @@ -463,8 +463,8 @@ await page.GetByRole(AriaRole.Textbox).PressAsync("Shift+Enter");`); expect(messages[0].text()).toBe('press:ArrowDown'); }); - test('should emit single keyup on ArrowDown', async ({ page, openRecorder }) => { - const recorder = await openRecorder(); + test('should emit single keyup on ArrowDown', async ({ openRecorder }) => { + const { page, recorder } = await openRecorder(); await recorder.setContentAndWait(``); @@ -488,8 +488,8 @@ await page.GetByRole(AriaRole.Textbox).PressAsync("Shift+Enter");`); expect(messages[1].text()).toBe('up:ArrowDown'); }); - test('should check', async ({ page, openRecorder }) => { - const recorder = await openRecorder(); + test('should check', async ({ openRecorder }) => { + const { page, recorder } = await openRecorder(); await recorder.setContentAndWait(``); @@ -520,8 +520,8 @@ await page.Locator("#checkbox").CheckAsync();`); expect(message.text()).toBe('true'); }); - test('should check a radio button', async ({ page, openRecorder }) => { - const recorder = await openRecorder(); + test('should check a radio button', async ({ openRecorder }) => { + const { page, recorder } = await openRecorder(); await recorder.setContentAndWait(``); @@ -539,8 +539,8 @@ await page.Locator("#checkbox").CheckAsync();`); expect(message.text()).toBe('true'); }); - test('should check with keyboard', async ({ page, openRecorder }) => { - const recorder = await openRecorder(); + test('should check with keyboard', async ({ openRecorder }) => { + const { page, recorder } = await openRecorder(); await recorder.setContentAndWait(``); @@ -558,8 +558,8 @@ await page.Locator("#checkbox").CheckAsync();`); expect(message.text()).toBe('true'); }); - test('should uncheck', async ({ page, openRecorder }) => { - const recorder = await openRecorder(); + test('should uncheck', async ({ openRecorder }) => { + const { page, recorder } = await openRecorder(); await recorder.setContentAndWait(``); @@ -590,8 +590,8 @@ await page.Locator("#checkbox").UncheckAsync();`); expect(message.text()).toBe('false'); }); - test('should select', async ({ page, openRecorder }) => { - const recorder = await openRecorder(); + test('should select', async ({ openRecorder }) => { + const { page, recorder } = await openRecorder(); await recorder.setContentAndWait(''); @@ -623,8 +623,8 @@ await page.Locator("#age").SelectOptionAsync(new[] { "2" });`); expect(message.text()).toBe('2'); }); - test('should select with size attribute', async ({ page, openRecorder }) => { - const recorder = await openRecorder(); + test('should select with size attribute', async ({ openRecorder }) => { + const { page, recorder } = await openRecorder(); await recorder.setContentAndWait(` +
one
one
two
`; @@ -224,7 +225,7 @@ test('should reset mouse position', async ({ reusedContext, browserName, platfor await expect(page.locator('#one')).toHaveCSS('background-color', 'rgb(0, 0, 255)'); await expect(page.locator('#two')).toHaveCSS('background-color', 'rgb(0, 0, 255)'); - await page.mouse.move(10, 45); + await page.mouse.move(10, 75); await expect(page.locator('#one')).toHaveCSS('background-color', 'rgb(0, 0, 255)'); await expect(page.locator('#two')).toHaveCSS('background-color', 'rgb(255, 0, 0)'); From d7020cba6309092a70e76f5389c753d87887ebfb Mon Sep 17 00:00:00 2001 From: Yury Semikhatsky Date: Thu, 3 Oct 2024 18:16:49 -0700 Subject: [PATCH 145/151] test: scroll mobile page with background-attachment: fixed (#31992) Reference: https://github.com/microsoft/playwright/issues/31551 Reference: https://github.com/microsoft/playwright/issues/23573 --- tests/assets/input/background-fixed.html | 16 ++++++++++++++++ .../browsercontext-viewport-mobile.spec.ts | 16 ++++++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 tests/assets/input/background-fixed.html diff --git a/tests/assets/input/background-fixed.html b/tests/assets/input/background-fixed.html new file mode 100644 index 0000000000..5093939a5b --- /dev/null +++ b/tests/assets/input/background-fixed.html @@ -0,0 +1,16 @@ + + + + + +
tall
+ + diff --git a/tests/library/browsercontext-viewport-mobile.spec.ts b/tests/library/browsercontext-viewport-mobile.spec.ts index 2e0f90ceb0..ed774e383a 100644 --- a/tests/library/browsercontext-viewport-mobile.spec.ts +++ b/tests/library/browsercontext-viewport-mobile.spec.ts @@ -188,6 +188,22 @@ it.describe('mobile viewport', () => { await context.close(); }); + it('should scroll mobile page with background-attachment: fixed', { + annotation: [ + { type: 'issue', description: 'https://github.com/microsoft/playwright/issues/31551' }, + { type: 'issue', description: 'https://github.com/microsoft/playwright/issues/23573' }, + ] + }, async ({ playwright, browser, server, browserName, isLinux, headless }) => { + it.fixme(browserName === 'webkit' && isLinux && headless, 'Fails on WPE apparently due to accelerated compositing + fixed layout'); + const iPhone = playwright.devices['iPhone 12']; + const context = await browser.newContext({ ...iPhone }); + const page = await context.newPage(); + await page.goto(server.PREFIX + '/input/background-fixed.html'); + await page.getByRole('button').click(); + expect(await page.evaluate(() => window.scrollY)).toBeGreaterThan(1000); + await context.close(); + }); + it('view scale should reset after navigation', async ({ browser, browserName }) => { it.info().annotations.push({ type: 'issue', description: 'https://github.com/microsoft/playwright/issues/26876' }); const context = await browser.newContext({ From dfa4ab8726c417a602d028e590b39d8e38a8b23c Mon Sep 17 00:00:00 2001 From: Max Schmitt Date: Fri, 4 Oct 2024 10:06:56 +0200 Subject: [PATCH 146/151] test: speed up only-changed CT test (#32947) --- tests/playwright-test/only-changed.spec.ts | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/tests/playwright-test/only-changed.spec.ts b/tests/playwright-test/only-changed.spec.ts index b632ba262a..5a9c6ee121 100644 --- a/tests/playwright-test/only-changed.spec.ts +++ b/tests/playwright-test/only-changed.spec.ts @@ -21,7 +21,7 @@ const test = baseTest.extend<{ git(command: string): void }>({ git: async ({}, use, testInfo) => { const baseDir = testInfo.outputPath(); - const git = (command: string) => execSync(`git ${command}`, { cwd: baseDir }); + const git = (command: string) => execSync(`git ${command}`, { cwd: baseDir, stdio: process.env.PWTEST_DEBUG ? 'inherit' : 'ignore' }); git(`init --initial-branch=main`); git(`config --local user.name "Robert Botman"`); @@ -204,7 +204,7 @@ test('should suppport component tests', async ({ runInlineTest, git, writeFiles test('pass', async ({ mount }) => { const component = await mount(); - await expect(component).toHaveText('Button'); + await expect(component).toHaveText('Button', { timeout: 1000 }); }); `, 'src/button2.test.tsx': ` @@ -213,7 +213,7 @@ test('should suppport component tests', async ({ runInlineTest, git, writeFiles test('pass', async ({ mount }) => { const component = await mount(); - await expect(component).toHaveText('Button'); + await expect(component).toHaveText('Button', { timeout: 1000 }); }); `, 'src/button3.test.tsx': ` @@ -229,7 +229,7 @@ test('should suppport component tests', async ({ runInlineTest, git, writeFiles git(`add .`); git(`commit -m "init"`); - const result = await runInlineTest({}, { 'workers': 1, 'only-changed': true }); + const result = await runInlineTest({}, { 'only-changed': true }); expect(result.exitCode).toBe(0); expect(result.passed).toBe(0); @@ -242,10 +242,10 @@ test('should suppport component tests', async ({ runInlineTest, git, writeFiles test('pass', async ({ mount }) => { const component = await mount(); - await expect(component).toHaveText('Different Button'); + await expect(component).toHaveText('Different Button', { timeout: 1000 }); }); ` - }, { 'workers': 1, 'only-changed': true }); + }, { 'only-changed': true }); expect(result2.exitCode).toBe(1); expect(result2.failed).toBe(1); @@ -260,7 +260,7 @@ test('should suppport component tests', async ({ runInlineTest, git, writeFiles 'src/contents.ts': ` export const content = 'Changed Content'; ` - }, { 'workers': 1, 'only-changed': true }); + }, { 'only-changed': true }); expect(result3.exitCode).toBe(1); expect(result3.failed).toBe(2); From 0a45549533ba2b7fee031f5e682433c122398cf8 Mon Sep 17 00:00:00 2001 From: Playwright Service <89237858+playwrightmachine@users.noreply.github.com> Date: Fri, 4 Oct 2024 02:14:08 -0700 Subject: [PATCH 147/151] feat(chromium): roll to r1140 (#32949) Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com> --- README.md | 4 +- packages/playwright-core/browsers.json | 4 +- .../src/server/deviceDescriptorsSource.json | 96 +++++++++---------- 3 files changed, 52 insertions(+), 52 deletions(-) diff --git a/README.md b/README.md index 356f2b0151..6df15c2024 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # 🎭 Playwright -[![npm version](https://img.shields.io/npm/v/playwright.svg)](https://www.npmjs.com/package/playwright) [![Chromium version](https://img.shields.io/badge/chromium-130.0.6723.19-blue.svg?logo=google-chrome)](https://www.chromium.org/Home) [![Firefox version](https://img.shields.io/badge/firefox-131.0-blue.svg?logo=firefoxbrowser)](https://www.mozilla.org/en-US/firefox/new/) [![WebKit version](https://img.shields.io/badge/webkit-18.0-blue.svg?logo=safari)](https://webkit.org/) [![Join Discord](https://img.shields.io/badge/join-discord-infomational)](https://aka.ms/playwright/discord) +[![npm version](https://img.shields.io/npm/v/playwright.svg)](https://www.npmjs.com/package/playwright) [![Chromium version](https://img.shields.io/badge/chromium-130.0.6723.31-blue.svg?logo=google-chrome)](https://www.chromium.org/Home) [![Firefox version](https://img.shields.io/badge/firefox-131.0-blue.svg?logo=firefoxbrowser)](https://www.mozilla.org/en-US/firefox/new/) [![WebKit version](https://img.shields.io/badge/webkit-18.0-blue.svg?logo=safari)](https://webkit.org/) [![Join Discord](https://img.shields.io/badge/join-discord-infomational)](https://aka.ms/playwright/discord) ## [Documentation](https://playwright.dev) | [API reference](https://playwright.dev/docs/api/class-playwright) @@ -8,7 +8,7 @@ Playwright is a framework for Web Testing and Automation. It allows testing [Chr | | Linux | macOS | Windows | | :--- | :---: | :---: | :---: | -| Chromium 130.0.6723.19 | :white_check_mark: | :white_check_mark: | :white_check_mark: | +| Chromium 130.0.6723.31 | :white_check_mark: | :white_check_mark: | :white_check_mark: | | WebKit 18.0 | :white_check_mark: | :white_check_mark: | :white_check_mark: | | Firefox 131.0 | :white_check_mark: | :white_check_mark: | :white_check_mark: | diff --git a/packages/playwright-core/browsers.json b/packages/playwright-core/browsers.json index 3fc99636e3..00c7a751f4 100644 --- a/packages/playwright-core/browsers.json +++ b/packages/playwright-core/browsers.json @@ -3,9 +3,9 @@ "browsers": [ { "name": "chromium", - "revision": "1139", + "revision": "1140", "installByDefault": true, - "browserVersion": "130.0.6723.19" + "browserVersion": "130.0.6723.31" }, { "name": "chromium-tip-of-tree", diff --git a/packages/playwright-core/src/server/deviceDescriptorsSource.json b/packages/playwright-core/src/server/deviceDescriptorsSource.json index b411b0f0fd..1b0a015346 100644 --- a/packages/playwright-core/src/server/deviceDescriptorsSource.json +++ b/packages/playwright-core/src/server/deviceDescriptorsSource.json @@ -110,7 +110,7 @@ "defaultBrowserType": "webkit" }, "Galaxy S5": { - "userAgent": "Mozilla/5.0 (Linux; Android 5.0; SM-G900P Build/LRX21T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.19 Mobile Safari/537.36", + "userAgent": "Mozilla/5.0 (Linux; Android 5.0; SM-G900P Build/LRX21T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.31 Mobile Safari/537.36", "viewport": { "width": 360, "height": 640 @@ -121,7 +121,7 @@ "defaultBrowserType": "chromium" }, "Galaxy S5 landscape": { - "userAgent": "Mozilla/5.0 (Linux; Android 5.0; SM-G900P Build/LRX21T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.19 Mobile Safari/537.36", + "userAgent": "Mozilla/5.0 (Linux; Android 5.0; SM-G900P Build/LRX21T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.31 Mobile Safari/537.36", "viewport": { "width": 640, "height": 360 @@ -132,7 +132,7 @@ "defaultBrowserType": "chromium" }, "Galaxy S8": { - "userAgent": "Mozilla/5.0 (Linux; Android 7.0; SM-G950U Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.19 Mobile Safari/537.36", + "userAgent": "Mozilla/5.0 (Linux; Android 7.0; SM-G950U Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.31 Mobile Safari/537.36", "viewport": { "width": 360, "height": 740 @@ -143,7 +143,7 @@ "defaultBrowserType": "chromium" }, "Galaxy S8 landscape": { - "userAgent": "Mozilla/5.0 (Linux; Android 7.0; SM-G950U Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.19 Mobile Safari/537.36", + "userAgent": "Mozilla/5.0 (Linux; Android 7.0; SM-G950U Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.31 Mobile Safari/537.36", "viewport": { "width": 740, "height": 360 @@ -154,7 +154,7 @@ "defaultBrowserType": "chromium" }, "Galaxy S9+": { - "userAgent": "Mozilla/5.0 (Linux; Android 8.0.0; SM-G965U Build/R16NW) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.19 Mobile Safari/537.36", + "userAgent": "Mozilla/5.0 (Linux; Android 8.0.0; SM-G965U Build/R16NW) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.31 Mobile Safari/537.36", "viewport": { "width": 320, "height": 658 @@ -165,7 +165,7 @@ "defaultBrowserType": "chromium" }, "Galaxy S9+ landscape": { - "userAgent": "Mozilla/5.0 (Linux; Android 8.0.0; SM-G965U Build/R16NW) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.19 Mobile Safari/537.36", + "userAgent": "Mozilla/5.0 (Linux; Android 8.0.0; SM-G965U Build/R16NW) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.31 Mobile Safari/537.36", "viewport": { "width": 658, "height": 320 @@ -176,7 +176,7 @@ "defaultBrowserType": "chromium" }, "Galaxy Tab S4": { - "userAgent": "Mozilla/5.0 (Linux; Android 8.1.0; SM-T837A) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.19 Safari/537.36", + "userAgent": "Mozilla/5.0 (Linux; Android 8.1.0; SM-T837A) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.31 Safari/537.36", "viewport": { "width": 712, "height": 1138 @@ -187,7 +187,7 @@ "defaultBrowserType": "chromium" }, "Galaxy Tab S4 landscape": { - "userAgent": "Mozilla/5.0 (Linux; Android 8.1.0; SM-T837A) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.19 Safari/537.36", + "userAgent": "Mozilla/5.0 (Linux; Android 8.1.0; SM-T837A) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.31 Safari/537.36", "viewport": { "width": 1138, "height": 712 @@ -1098,7 +1098,7 @@ "defaultBrowserType": "webkit" }, "LG Optimus L70": { - "userAgent": "Mozilla/5.0 (Linux; U; Android 4.4.2; en-us; LGMS323 Build/KOT49I.MS32310c) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/130.0.6723.19 Mobile Safari/537.36", + "userAgent": "Mozilla/5.0 (Linux; U; Android 4.4.2; en-us; LGMS323 Build/KOT49I.MS32310c) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/130.0.6723.31 Mobile Safari/537.36", "viewport": { "width": 384, "height": 640 @@ -1109,7 +1109,7 @@ "defaultBrowserType": "chromium" }, "LG Optimus L70 landscape": { - "userAgent": "Mozilla/5.0 (Linux; U; Android 4.4.2; en-us; LGMS323 Build/KOT49I.MS32310c) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/130.0.6723.19 Mobile Safari/537.36", + "userAgent": "Mozilla/5.0 (Linux; U; Android 4.4.2; en-us; LGMS323 Build/KOT49I.MS32310c) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/130.0.6723.31 Mobile Safari/537.36", "viewport": { "width": 640, "height": 384 @@ -1120,7 +1120,7 @@ "defaultBrowserType": "chromium" }, "Microsoft Lumia 550": { - "userAgent": "Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; Microsoft; Lumia 550) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.19 Mobile Safari/537.36 Edge/14.14263", + "userAgent": "Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; Microsoft; Lumia 550) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.31 Mobile Safari/537.36 Edge/14.14263", "viewport": { "width": 640, "height": 360 @@ -1131,7 +1131,7 @@ "defaultBrowserType": "chromium" }, "Microsoft Lumia 550 landscape": { - "userAgent": "Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; Microsoft; Lumia 550) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.19 Mobile Safari/537.36 Edge/14.14263", + "userAgent": "Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; Microsoft; Lumia 550) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.31 Mobile Safari/537.36 Edge/14.14263", "viewport": { "width": 360, "height": 640 @@ -1142,7 +1142,7 @@ "defaultBrowserType": "chromium" }, "Microsoft Lumia 950": { - "userAgent": "Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; Microsoft; Lumia 950) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.19 Mobile Safari/537.36 Edge/14.14263", + "userAgent": "Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; Microsoft; Lumia 950) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.31 Mobile Safari/537.36 Edge/14.14263", "viewport": { "width": 360, "height": 640 @@ -1153,7 +1153,7 @@ "defaultBrowserType": "chromium" }, "Microsoft Lumia 950 landscape": { - "userAgent": "Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; Microsoft; Lumia 950) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.19 Mobile Safari/537.36 Edge/14.14263", + "userAgent": "Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; Microsoft; Lumia 950) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.31 Mobile Safari/537.36 Edge/14.14263", "viewport": { "width": 640, "height": 360 @@ -1164,7 +1164,7 @@ "defaultBrowserType": "chromium" }, "Nexus 10": { - "userAgent": "Mozilla/5.0 (Linux; Android 6.0.1; Nexus 10 Build/MOB31T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.19 Safari/537.36", + "userAgent": "Mozilla/5.0 (Linux; Android 6.0.1; Nexus 10 Build/MOB31T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.31 Safari/537.36", "viewport": { "width": 800, "height": 1280 @@ -1175,7 +1175,7 @@ "defaultBrowserType": "chromium" }, "Nexus 10 landscape": { - "userAgent": "Mozilla/5.0 (Linux; Android 6.0.1; Nexus 10 Build/MOB31T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.19 Safari/537.36", + "userAgent": "Mozilla/5.0 (Linux; Android 6.0.1; Nexus 10 Build/MOB31T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.31 Safari/537.36", "viewport": { "width": 1280, "height": 800 @@ -1186,7 +1186,7 @@ "defaultBrowserType": "chromium" }, "Nexus 4": { - "userAgent": "Mozilla/5.0 (Linux; Android 4.4.2; Nexus 4 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.19 Mobile Safari/537.36", + "userAgent": "Mozilla/5.0 (Linux; Android 4.4.2; Nexus 4 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.31 Mobile Safari/537.36", "viewport": { "width": 384, "height": 640 @@ -1197,7 +1197,7 @@ "defaultBrowserType": "chromium" }, "Nexus 4 landscape": { - "userAgent": "Mozilla/5.0 (Linux; Android 4.4.2; Nexus 4 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.19 Mobile Safari/537.36", + "userAgent": "Mozilla/5.0 (Linux; Android 4.4.2; Nexus 4 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.31 Mobile Safari/537.36", "viewport": { "width": 640, "height": 384 @@ -1208,7 +1208,7 @@ "defaultBrowserType": "chromium" }, "Nexus 5": { - "userAgent": "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.19 Mobile Safari/537.36", + "userAgent": "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.31 Mobile Safari/537.36", "viewport": { "width": 360, "height": 640 @@ -1219,7 +1219,7 @@ "defaultBrowserType": "chromium" }, "Nexus 5 landscape": { - "userAgent": "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.19 Mobile Safari/537.36", + "userAgent": "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.31 Mobile Safari/537.36", "viewport": { "width": 640, "height": 360 @@ -1230,7 +1230,7 @@ "defaultBrowserType": "chromium" }, "Nexus 5X": { - "userAgent": "Mozilla/5.0 (Linux; Android 8.0.0; Nexus 5X Build/OPR4.170623.006) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.19 Mobile Safari/537.36", + "userAgent": "Mozilla/5.0 (Linux; Android 8.0.0; Nexus 5X Build/OPR4.170623.006) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.31 Mobile Safari/537.36", "viewport": { "width": 412, "height": 732 @@ -1241,7 +1241,7 @@ "defaultBrowserType": "chromium" }, "Nexus 5X landscape": { - "userAgent": "Mozilla/5.0 (Linux; Android 8.0.0; Nexus 5X Build/OPR4.170623.006) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.19 Mobile Safari/537.36", + "userAgent": "Mozilla/5.0 (Linux; Android 8.0.0; Nexus 5X Build/OPR4.170623.006) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.31 Mobile Safari/537.36", "viewport": { "width": 732, "height": 412 @@ -1252,7 +1252,7 @@ "defaultBrowserType": "chromium" }, "Nexus 6": { - "userAgent": "Mozilla/5.0 (Linux; Android 7.1.1; Nexus 6 Build/N6F26U) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.19 Mobile Safari/537.36", + "userAgent": "Mozilla/5.0 (Linux; Android 7.1.1; Nexus 6 Build/N6F26U) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.31 Mobile Safari/537.36", "viewport": { "width": 412, "height": 732 @@ -1263,7 +1263,7 @@ "defaultBrowserType": "chromium" }, "Nexus 6 landscape": { - "userAgent": "Mozilla/5.0 (Linux; Android 7.1.1; Nexus 6 Build/N6F26U) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.19 Mobile Safari/537.36", + "userAgent": "Mozilla/5.0 (Linux; Android 7.1.1; Nexus 6 Build/N6F26U) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.31 Mobile Safari/537.36", "viewport": { "width": 732, "height": 412 @@ -1274,7 +1274,7 @@ "defaultBrowserType": "chromium" }, "Nexus 6P": { - "userAgent": "Mozilla/5.0 (Linux; Android 8.0.0; Nexus 6P Build/OPP3.170518.006) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.19 Mobile Safari/537.36", + "userAgent": "Mozilla/5.0 (Linux; Android 8.0.0; Nexus 6P Build/OPP3.170518.006) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.31 Mobile Safari/537.36", "viewport": { "width": 412, "height": 732 @@ -1285,7 +1285,7 @@ "defaultBrowserType": "chromium" }, "Nexus 6P landscape": { - "userAgent": "Mozilla/5.0 (Linux; Android 8.0.0; Nexus 6P Build/OPP3.170518.006) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.19 Mobile Safari/537.36", + "userAgent": "Mozilla/5.0 (Linux; Android 8.0.0; Nexus 6P Build/OPP3.170518.006) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.31 Mobile Safari/537.36", "viewport": { "width": 732, "height": 412 @@ -1296,7 +1296,7 @@ "defaultBrowserType": "chromium" }, "Nexus 7": { - "userAgent": "Mozilla/5.0 (Linux; Android 6.0.1; Nexus 7 Build/MOB30X) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.19 Safari/537.36", + "userAgent": "Mozilla/5.0 (Linux; Android 6.0.1; Nexus 7 Build/MOB30X) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.31 Safari/537.36", "viewport": { "width": 600, "height": 960 @@ -1307,7 +1307,7 @@ "defaultBrowserType": "chromium" }, "Nexus 7 landscape": { - "userAgent": "Mozilla/5.0 (Linux; Android 6.0.1; Nexus 7 Build/MOB30X) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.19 Safari/537.36", + "userAgent": "Mozilla/5.0 (Linux; Android 6.0.1; Nexus 7 Build/MOB30X) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.31 Safari/537.36", "viewport": { "width": 960, "height": 600 @@ -1362,7 +1362,7 @@ "defaultBrowserType": "webkit" }, "Pixel 2": { - "userAgent": "Mozilla/5.0 (Linux; Android 8.0; Pixel 2 Build/OPD3.170816.012) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.19 Mobile Safari/537.36", + "userAgent": "Mozilla/5.0 (Linux; Android 8.0; Pixel 2 Build/OPD3.170816.012) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.31 Mobile Safari/537.36", "viewport": { "width": 411, "height": 731 @@ -1373,7 +1373,7 @@ "defaultBrowserType": "chromium" }, "Pixel 2 landscape": { - "userAgent": "Mozilla/5.0 (Linux; Android 8.0; Pixel 2 Build/OPD3.170816.012) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.19 Mobile Safari/537.36", + "userAgent": "Mozilla/5.0 (Linux; Android 8.0; Pixel 2 Build/OPD3.170816.012) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.31 Mobile Safari/537.36", "viewport": { "width": 731, "height": 411 @@ -1384,7 +1384,7 @@ "defaultBrowserType": "chromium" }, "Pixel 2 XL": { - "userAgent": "Mozilla/5.0 (Linux; Android 8.0.0; Pixel 2 XL Build/OPD1.170816.004) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.19 Mobile Safari/537.36", + "userAgent": "Mozilla/5.0 (Linux; Android 8.0.0; Pixel 2 XL Build/OPD1.170816.004) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.31 Mobile Safari/537.36", "viewport": { "width": 411, "height": 823 @@ -1395,7 +1395,7 @@ "defaultBrowserType": "chromium" }, "Pixel 2 XL landscape": { - "userAgent": "Mozilla/5.0 (Linux; Android 8.0.0; Pixel 2 XL Build/OPD1.170816.004) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.19 Mobile Safari/537.36", + "userAgent": "Mozilla/5.0 (Linux; Android 8.0.0; Pixel 2 XL Build/OPD1.170816.004) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.31 Mobile Safari/537.36", "viewport": { "width": 823, "height": 411 @@ -1406,7 +1406,7 @@ "defaultBrowserType": "chromium" }, "Pixel 3": { - "userAgent": "Mozilla/5.0 (Linux; Android 9; Pixel 3 Build/PQ1A.181105.017.A1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.19 Mobile Safari/537.36", + "userAgent": "Mozilla/5.0 (Linux; Android 9; Pixel 3 Build/PQ1A.181105.017.A1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.31 Mobile Safari/537.36", "viewport": { "width": 393, "height": 786 @@ -1417,7 +1417,7 @@ "defaultBrowserType": "chromium" }, "Pixel 3 landscape": { - "userAgent": "Mozilla/5.0 (Linux; Android 9; Pixel 3 Build/PQ1A.181105.017.A1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.19 Mobile Safari/537.36", + "userAgent": "Mozilla/5.0 (Linux; Android 9; Pixel 3 Build/PQ1A.181105.017.A1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.31 Mobile Safari/537.36", "viewport": { "width": 786, "height": 393 @@ -1428,7 +1428,7 @@ "defaultBrowserType": "chromium" }, "Pixel 4": { - "userAgent": "Mozilla/5.0 (Linux; Android 10; Pixel 4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.19 Mobile Safari/537.36", + "userAgent": "Mozilla/5.0 (Linux; Android 10; Pixel 4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.31 Mobile Safari/537.36", "viewport": { "width": 353, "height": 745 @@ -1439,7 +1439,7 @@ "defaultBrowserType": "chromium" }, "Pixel 4 landscape": { - "userAgent": "Mozilla/5.0 (Linux; Android 10; Pixel 4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.19 Mobile Safari/537.36", + "userAgent": "Mozilla/5.0 (Linux; Android 10; Pixel 4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.31 Mobile Safari/537.36", "viewport": { "width": 745, "height": 353 @@ -1450,7 +1450,7 @@ "defaultBrowserType": "chromium" }, "Pixel 4a (5G)": { - "userAgent": "Mozilla/5.0 (Linux; Android 11; Pixel 4a (5G)) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.19 Mobile Safari/537.36", + "userAgent": "Mozilla/5.0 (Linux; Android 11; Pixel 4a (5G)) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.31 Mobile Safari/537.36", "screen": { "width": 412, "height": 892 @@ -1465,7 +1465,7 @@ "defaultBrowserType": "chromium" }, "Pixel 4a (5G) landscape": { - "userAgent": "Mozilla/5.0 (Linux; Android 11; Pixel 4a (5G)) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.19 Mobile Safari/537.36", + "userAgent": "Mozilla/5.0 (Linux; Android 11; Pixel 4a (5G)) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.31 Mobile Safari/537.36", "screen": { "height": 892, "width": 412 @@ -1480,7 +1480,7 @@ "defaultBrowserType": "chromium" }, "Pixel 5": { - "userAgent": "Mozilla/5.0 (Linux; Android 11; Pixel 5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.19 Mobile Safari/537.36", + "userAgent": "Mozilla/5.0 (Linux; Android 11; Pixel 5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.31 Mobile Safari/537.36", "screen": { "width": 393, "height": 851 @@ -1495,7 +1495,7 @@ "defaultBrowserType": "chromium" }, "Pixel 5 landscape": { - "userAgent": "Mozilla/5.0 (Linux; Android 11; Pixel 5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.19 Mobile Safari/537.36", + "userAgent": "Mozilla/5.0 (Linux; Android 11; Pixel 5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.31 Mobile Safari/537.36", "screen": { "width": 851, "height": 393 @@ -1510,7 +1510,7 @@ "defaultBrowserType": "chromium" }, "Pixel 7": { - "userAgent": "Mozilla/5.0 (Linux; Android 14; Pixel 7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.19 Mobile Safari/537.36", + "userAgent": "Mozilla/5.0 (Linux; Android 14; Pixel 7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.31 Mobile Safari/537.36", "screen": { "width": 412, "height": 915 @@ -1525,7 +1525,7 @@ "defaultBrowserType": "chromium" }, "Pixel 7 landscape": { - "userAgent": "Mozilla/5.0 (Linux; Android 14; Pixel 7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.19 Mobile Safari/537.36", + "userAgent": "Mozilla/5.0 (Linux; Android 14; Pixel 7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.31 Mobile Safari/537.36", "screen": { "width": 915, "height": 412 @@ -1540,7 +1540,7 @@ "defaultBrowserType": "chromium" }, "Moto G4": { - "userAgent": "Mozilla/5.0 (Linux; Android 7.0; Moto G (4)) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.19 Mobile Safari/537.36", + "userAgent": "Mozilla/5.0 (Linux; Android 7.0; Moto G (4)) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.31 Mobile Safari/537.36", "viewport": { "width": 360, "height": 640 @@ -1551,7 +1551,7 @@ "defaultBrowserType": "chromium" }, "Moto G4 landscape": { - "userAgent": "Mozilla/5.0 (Linux; Android 7.0; Moto G (4)) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.19 Mobile Safari/537.36", + "userAgent": "Mozilla/5.0 (Linux; Android 7.0; Moto G (4)) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.31 Mobile Safari/537.36", "viewport": { "width": 640, "height": 360 @@ -1562,7 +1562,7 @@ "defaultBrowserType": "chromium" }, "Desktop Chrome HiDPI": { - "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.19 Safari/537.36", + "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.31 Safari/537.36", "screen": { "width": 1792, "height": 1120 @@ -1577,7 +1577,7 @@ "defaultBrowserType": "chromium" }, "Desktop Edge HiDPI": { - "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.19 Safari/537.36 Edg/130.0.6723.19", + "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.31 Safari/537.36 Edg/130.0.6723.31", "screen": { "width": 1792, "height": 1120 @@ -1622,7 +1622,7 @@ "defaultBrowserType": "webkit" }, "Desktop Chrome": { - "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.19 Safari/537.36", + "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.31 Safari/537.36", "screen": { "width": 1920, "height": 1080 @@ -1637,7 +1637,7 @@ "defaultBrowserType": "chromium" }, "Desktop Edge": { - "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.19 Safari/537.36 Edg/130.0.6723.19", + "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.31 Safari/537.36 Edg/130.0.6723.31", "screen": { "width": 1920, "height": 1080 From 895be9f8de4b1fe06d839370a95ed8464365ac7d Mon Sep 17 00:00:00 2001 From: Max Schmitt Date: Fri, 4 Oct 2024 11:34:04 +0200 Subject: [PATCH 148/151] chore: lint java docs snippets (#32945) --- .github/workflows/infra.yml | 8 +- docs/src/accessibility-testing-java.md | 94 ++++++++------- docs/src/api-testing-java.md | 50 ++++---- docs/src/api/class-apiresponseassertions.md | 8 +- docs/src/api/class-browser.md | 22 ++-- docs/src/api/class-browsercontext.md | 5 +- docs/src/api/class-consolemessage.md | 4 +- docs/src/api/class-formdata.md | 6 +- docs/src/api/class-keyboard.md | 2 +- docs/src/api/class-locator.md | 2 +- docs/src/api/class-locatorassertions.md | 8 +- docs/src/api/class-page.md | 41 +++---- docs/src/api/class-pageassertions.md | 6 +- docs/src/api/class-playwrightassertions.md | 5 +- docs/src/api/params.md | 10 +- docs/src/emulation.md | 4 +- docs/src/locators.md | 12 +- docs/src/mock.md | 13 ++- docs/src/network.md | 6 +- docs/src/pom.md | 2 +- docs/src/release-notes-java.md | 16 ++- docs/src/screenshots.md | 2 +- docs/src/test-runners-java.md | 4 +- utils/doclint/linting-code-snippets/cli.js | 11 ++ .../linting-code-snippets/java/.gitignore | 2 + .../linting-code-snippets/java/pom.xml | 53 +++++++++ .../java/src/main/java/JavaSyntaxChecker.java | 110 ++++++++++++++++++ 27 files changed, 349 insertions(+), 157 deletions(-) create mode 100644 utils/doclint/linting-code-snippets/java/.gitignore create mode 100644 utils/doclint/linting-code-snippets/java/pom.xml create mode 100644 utils/doclint/linting-code-snippets/java/src/main/java/JavaSyntaxChecker.java diff --git a/.github/workflows/infra.yml b/.github/workflows/infra.yml index f33c8535f0..905597c8bd 100644 --- a/.github/workflows/infra.yml +++ b/.github/workflows/infra.yml @@ -38,7 +38,7 @@ jobs: run: npm audit --omit dev lint-snippets: name: "Lint snippets" - runs-on: ubuntu-22.04 + runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 @@ -50,6 +50,12 @@ jobs: - uses: actions/setup-dotnet@v4 with: dotnet-version: 8.0.x + - uses: actions/setup-java@v4 + with: + distribution: 'zulu' + java-version: '21' - run: npm ci - run: pip install -r utils/doclint/linting-code-snippets/python/requirements.txt + - run: mvn package + working-directory: utils/doclint/linting-code-snippets/java - run: node utils/doclint/linting-code-snippets/cli.js diff --git a/docs/src/accessibility-testing-java.md b/docs/src/accessibility-testing-java.md index d62bac64fa..13f9c4e3e4 100644 --- a/docs/src/accessibility-testing-java.md +++ b/docs/src/accessibility-testing-java.md @@ -70,22 +70,24 @@ For example, you can use [`AxeBuilder.include()`](https://github.com/dequelabs/a `AxeBuilder.analyze()` will scan the page *in its current state* when you call it. To scan parts of a page that are revealed based on UI interactions, use [Locators](./locators.md) to interact with the page before invoking `analyze()`: ```java -@Test -void navigationMenuFlyoutShouldNotHaveAutomaticallyDetectableAccessibilityViolations() throws Exception { - page.navigate("https://your-site.com/"); +public class HomepageTests { + @Test + void navigationMenuFlyoutShouldNotHaveAutomaticallyDetectableAccessibilityViolations() throws Exception { + page.navigate("https://your-site.com/"); - page.locator("button[aria-label=\"Navigation Menu\"]").click(); + page.locator("button[aria-label=\"Navigation Menu\"]").click(); - // It is important to waitFor() the page to be in the desired - // state *before* running analyze(). Otherwise, axe might not - // find all the elements your test expects it to scan. - page.locator("#navigation-menu-flyout").waitFor(); + // It is important to waitFor() the page to be in the desired + // state *before* running analyze(). Otherwise, axe might not + // find all the elements your test expects it to scan. + page.locator("#navigation-menu-flyout").waitFor(); - AxeResults accessibilityScanResults = new AxeBuilder(page) - .include(Arrays.asList("#navigation-menu-flyout")) - .analyze(); + AxeResults accessibilityScanResults = new AxeBuilder(page) + .include(Arrays.asList("#navigation-menu-flyout")) + .analyze(); - assertEquals(Collections.emptyList(), accessibilityScanResults.getViolations()); + assertEquals(Collections.emptyList(), accessibilityScanResults.getViolations()); + } } ``` @@ -158,38 +160,40 @@ This approach avoids the downsides of using `AxeBuilder.exclude()` at the cost o Here is an example of using fingerprints based on only rule IDs and "target" selectors pointing to each violation: ```java -@Test -shouldOnlyHaveAccessibilityViolationsMatchingKnownFingerprints() throws Exception { - page.navigate("https://your-site.com/"); +public class HomepageTests { + @Test + shouldOnlyHaveAccessibilityViolationsMatchingKnownFingerprints() throws Exception { + page.navigate("https://your-site.com/"); - AxeResults accessibilityScanResults = new AxeBuilder(page).analyze(); + AxeResults accessibilityScanResults = new AxeBuilder(page).analyze(); - List violationFingerprints = fingerprintsFromScanResults(accessibilityScanResults); + List violationFingerprints = fingerprintsFromScanResults(accessibilityScanResults); - assertEquals(Arrays.asList( - new ViolationFingerprint("aria-roles", "[span[role=\"invalid\"]]"), - new ViolationFingerprint("color-contrast", "[li:nth-child(2) > span]"), - new ViolationFingerprint("label", "[input]") - ), violationFingerprints); -} + assertEquals(Arrays.asList( + new ViolationFingerprint("aria-roles", "[span[role=\"invalid\"]]"), + new ViolationFingerprint("color-contrast", "[li:nth-child(2) > span]"), + new ViolationFingerprint("label", "[input]") + ), violationFingerprints); + } -// You can make your "fingerprint" as specific as you like. This one considers a violation to be -// "the same" if it corresponds the same Axe rule on the same element. -// -// Using a record type makes it easy to compare fingerprints with assertEquals -public record ViolationFingerprint(String ruleId, String target) { } + // You can make your "fingerprint" as specific as you like. This one considers a violation to be + // "the same" if it corresponds the same Axe rule on the same element. + // + // Using a record type makes it easy to compare fingerprints with assertEquals + public record ViolationFingerprint(String ruleId, String target) { } -public List fingerprintsFromScanResults(AxeResults results) { - return results.getViolations().stream() - // Each violation refers to one rule and multiple "nodes" which violate it - .flatMap(violation -> violation.getNodes().stream() - .map(node -> new ViolationFingerprint( - violation.getId(), - // Each node contains a "target", which is a CSS selector that uniquely identifies it - // If the page involves iframes or shadow DOMs, it may be a chain of CSS selectors - node.getTarget().toString() - ))) - .collect(Collectors.toList()); + public List fingerprintsFromScanResults(AxeResults results) { + return results.getViolations().stream() + // Each violation refers to one rule and multiple "nodes" which violate it + .flatMap(violation -> violation.getNodes().stream() + .map(node -> new ViolationFingerprint( + violation.getId(), + // Each node contains a "target", which is a CSS selector that uniquely identifies it + // If the page involves iframes or shadow DOMs, it may be a chain of CSS selectors + node.getTarget().toString() + ))) + .collect(Collectors.toList()); + } } ``` @@ -208,11 +212,11 @@ This example fixture creates an `AxeBuilder` object which is pre-configured with ```java class AxeTestFixtures extends TestFixtures { - AxeBuilder makeAxeBuilder() { - return new AxeBuilder(page) - .withTags(['wcag2a', 'wcag2aa', 'wcag21a', 'wcag21aa']) - .exclude('#commonly-reused-element-with-known-issue'); - } + AxeBuilder makeAxeBuilder() { + return new AxeBuilder(page) + .withTags(new String[]{"wcag2a", "wcag2aa", "wcag21a", "wcag21aa"}) + .exclude("#commonly-reused-element-with-known-issue"); + } } ``` @@ -229,7 +233,7 @@ public class HomepageTests extends AxeTestFixtures { AxeResults accessibilityScanResults = makeAxeBuilder() // Automatically uses the shared AxeBuilder configuration, // but supports additional test-specific configuration too - .include('#specific-element-under-test') + .include("#specific-element-under-test") .analyze(); assertEquals(Collections.emptyList(), accessibilityScanResults.getViolations()); diff --git a/docs/src/api-testing-java.md b/docs/src/api-testing-java.md index 987aad5de8..e8020e12ce 100644 --- a/docs/src/api-testing-java.md +++ b/docs/src/api-testing-java.md @@ -194,6 +194,7 @@ public class TestGitHubAPI { These tests assume that repository exists. You probably want to create a new one before running tests and delete it afterwards. Use `@BeforeAll` and `@AfterAll` hooks for that. ```java +public class TestGitHubAPI { // ... void createTestRepository() { @@ -223,6 +224,7 @@ These tests assume that repository exists. You probably want to create a new one disposeAPIRequestContext(); closePlaywright(); } +} ``` ### Complete test example @@ -381,18 +383,20 @@ The following test creates a new issue via API and then navigates to the list of project to check that it appears at the top of the list. The check is performed using [LocatorAssertions]. ```java -@Test -void lastCreatedIssueShouldBeFirstInTheList() { - Map data = new HashMap<>(); - data.put("title", "[Feature] request 1"); - data.put("body", "Feature description"); - APIResponse newIssue = request.post("/repos/" + USER + "/" + REPO + "/issues", - RequestOptions.create().setData(data)); - assertTrue(newIssue.ok()); +public class TestGitHubAPI { + @Test + void lastCreatedIssueShouldBeFirstInTheList() { + Map data = new HashMap<>(); + data.put("title", "[Feature] request 1"); + data.put("body", "Feature description"); + APIResponse newIssue = request.post("/repos/" + USER + "/" + REPO + "/issues", + RequestOptions.create().setData(data)); + assertTrue(newIssue.ok()); - page.navigate("https://github.com/" + USER + "/" + REPO + "/issues"); - Locator firstIssue = page.locator("a[data-hovercard-type='issue']").first(); - assertThat(firstIssue).hasText("[Feature] request 1"); + page.navigate("https://github.com/" + USER + "/" + REPO + "/issues"); + Locator firstIssue = page.locator("a[data-hovercard-type='issue']").first(); + assertThat(firstIssue).hasText("[Feature] request 1"); + } } ``` @@ -402,18 +406,20 @@ The following test creates a new issue via user interface in the browser and the it was created: ```java -@Test -void lastCreatedIssueShouldBeOnTheServer() { - page.navigate("https://github.com/" + USER + "/" + REPO + "/issues"); - page.locator("text=New Issue").click(); - page.locator("[aria-label='Title']").fill("Bug report 1"); - page.locator("[aria-label='Comment body']").fill("Bug description"); - page.locator("text=Submit new issue").click(); - String issueId = page.url().substring(page.url().lastIndexOf('/')); +public class TestGitHubAPI { + @Test + void lastCreatedIssueShouldBeOnTheServer() { + page.navigate("https://github.com/" + USER + "/" + REPO + "/issues"); + page.locator("text=New Issue").click(); + page.locator("[aria-label='Title']").fill("Bug report 1"); + page.locator("[aria-label='Comment body']").fill("Bug description"); + page.locator("text=Submit new issue").click(); + String issueId = page.url().substring(page.url().lastIndexOf('/')); - APIResponse newIssue = request.get("https://github.com/" + USER + "/" + REPO + "/issues/" + issueId); - assertThat(newIssue).isOK(); - assertTrue(newIssue.text().contains("Bug report 1")); + APIResponse newIssue = request.get("https://github.com/" + USER + "/" + REPO + "/issues/" + issueId); + assertThat(newIssue).isOK(); + assertTrue(newIssue.text().contains("Bug report 1")); + } } ``` diff --git a/docs/src/api/class-apiresponseassertions.md b/docs/src/api/class-apiresponseassertions.md index 6fce864d03..9584365d88 100644 --- a/docs/src/api/class-apiresponseassertions.md +++ b/docs/src/api/class-apiresponseassertions.md @@ -14,15 +14,15 @@ test('navigates to login', async ({ page }) => { ``` ```java -... +// ... import static com.microsoft.playwright.assertions.PlaywrightAssertions.assertThat; public class TestPage { - ... + // ... @Test void navigatesToLoginPage() { - ... - APIResponse response = page.request().get('https://playwright.dev'); + // ... + APIResponse response = page.request().get("https://playwright.dev"); assertThat(response).isOK(); } } diff --git a/docs/src/api/class-browser.md b/docs/src/api/class-browser.md index 59cf4c99c0..4dabfc52e4 100644 --- a/docs/src/api/class-browser.md +++ b/docs/src/api/class-browser.md @@ -18,15 +18,15 @@ const { firefox } = require('playwright'); // Or 'chromium' or 'webkit'. import com.microsoft.playwright.*; public class Example { - public static void main(String[] args) { - try (Playwright playwright = Playwright.create()) { - BrowserType firefox = playwright.firefox() - Browser browser = firefox.launch(); - Page page = browser.newPage(); - page.navigate('https://example.com'); - browser.close(); - } - } + public static void main(String[] args) { + try (Playwright playwright = Playwright.create()) { + BrowserType firefox = playwright.firefox(); + Browser browser = firefox.launch(); + Page page = browser.newPage(); + page.navigate("https://example.com"); + browser.close(); + } + } } ``` @@ -202,7 +202,7 @@ Browser browser = playwright.firefox().launch(); // Or 'chromium' or 'webkit'. BrowserContext context = browser.newContext(); // Create a new page in a pristine context. Page page = context.newPage(); -page.navigate('https://example.com'); +page.navigate("https://example.com"); // Graceful close up everything context.close(); @@ -331,7 +331,7 @@ await browser.stopTracing(); ```java browser.startTracing(page, new Browser.StartTracingOptions() .setPath(Paths.get("trace.json"))); -page.goto('https://www.google.com'); +page.navigate("https://www.google.com"); browser.stopTracing(); ``` diff --git a/docs/src/api/class-browsercontext.md b/docs/src/api/class-browsercontext.md index b504bf457b..8d6c57a3e3 100644 --- a/docs/src/api/class-browsercontext.md +++ b/docs/src/api/class-browsercontext.md @@ -655,7 +655,7 @@ import com.microsoft.playwright.*; public class Example { public static void main(String[] args) { try (Playwright playwright = Playwright.create()) { - BrowserType webkit = playwright.webkit() + BrowserType webkit = playwright.webkit(); Browser browser = webkit.launch(new BrowserType.LaunchOptions().setHeadless(false)); BrowserContext context = browser.newContext(); context.exposeBinding("pageURL", (source, args) -> source.page().url()); @@ -813,8 +813,9 @@ import java.util.Base64; public class Example { public static void main(String[] args) { try (Playwright playwright = Playwright.create()) { - BrowserType webkit = playwright.webkit() + BrowserType webkit = playwright.webkit(); Browser browser = webkit.launch(new BrowserType.LaunchOptions().setHeadless(false)); + BrowserContext context = browser.newContext(); context.exposeFunction("sha256", args -> { String text = (String) args[0]; MessageDigest crypto; diff --git a/docs/src/api/class-consolemessage.md b/docs/src/api/class-consolemessage.md index 2268ee3ed1..347838ae42 100644 --- a/docs/src/api/class-consolemessage.md +++ b/docs/src/api/class-consolemessage.md @@ -44,8 +44,8 @@ ConsoleMessage msg = page.waitForConsoleMessage(() -> { }); // Deconstruct console.log arguments -msg.args().get(0).jsonValue() // hello -msg.args().get(1).jsonValue() // 42 +msg.args().get(0).jsonValue(); // hello +msg.args().get(1).jsonValue(); // 42 ``` ```python async diff --git a/docs/src/api/class-formdata.md b/docs/src/api/class-formdata.md index 5ca85b361d..c5f4bcb51d 100644 --- a/docs/src/api/class-formdata.md +++ b/docs/src/api/class-formdata.md @@ -6,7 +6,7 @@ The [FormData] is used create form data that is sent via [APIRequestContext]. ```java import com.microsoft.playwright.options.FormData; -... +// ... FormData form = FormData.create() .set("firstName", "John") .set("lastName", "Doe") @@ -28,7 +28,7 @@ the new value onto the end of the existing set of values. ```java import com.microsoft.playwright.options.FormData; -... +// ... FormData form = FormData.create() // Only name and value are set. .append("firstName", "John") @@ -100,7 +100,7 @@ Sets a field on the form. File values can be passed either as `Path` or as `File ```java import com.microsoft.playwright.options.FormData; -... +// ... FormData form = FormData.create() // Only name and value are set. .set("firstName", "John") diff --git a/docs/src/api/class-keyboard.md b/docs/src/api/class-keyboard.md index 64a539cfbe..f86c4ad11f 100644 --- a/docs/src/api/class-keyboard.md +++ b/docs/src/api/class-keyboard.md @@ -257,7 +257,7 @@ await browser.close(); Page page = browser.newPage(); page.navigate("https://keycode.info"); page.keyboard().press("A"); -page.screenshot(new Page.ScreenshotOptions().setPath(Paths.get("A.png")); +page.screenshot(new Page.ScreenshotOptions().setPath(Paths.get("A.png"))); page.keyboard().press("ArrowLeft"); page.screenshot(new Page.ScreenshotOptions().setPath(Paths.get("ArrowLeft.png"))); page.keyboard().press("Shift+O"); diff --git a/docs/src/api/class-locator.md b/docs/src/api/class-locator.md index 3a9504ad59..8f0b53e16d 100644 --- a/docs/src/api/class-locator.md +++ b/docs/src/api/class-locator.md @@ -38,7 +38,7 @@ for li in page.get_by_role('listitem').all(): ``` ```java -for (Locator li : page.getByRole('listitem').all()) +for (Locator li : page.getByRole("listitem").all()) li.click(); ``` diff --git a/docs/src/api/class-locatorassertions.md b/docs/src/api/class-locatorassertions.md index 1ff5e52119..bfff2b07ad 100644 --- a/docs/src/api/class-locatorassertions.md +++ b/docs/src/api/class-locatorassertions.md @@ -14,14 +14,14 @@ test('status becomes submitted', async ({ page }) => { ``` ```java -... +// ... import static com.microsoft.playwright.assertions.PlaywrightAssertions.assertThat; public class TestLocator { - ... + // ... @Test void statusBecomesSubmitted() { - ... + // ... page.getByRole(AriaRole.BUTTON).click(); assertThat(page.locator(".status")).hasText("Submitted"); } @@ -2048,7 +2048,7 @@ await expect(locator).toHaveValues([/R/, /G/]); ``` ```java -page.locator("id=favorite-colors").selectOption(["R", "G"]); +page.locator("id=favorite-colors").selectOption(new String[]{"R", "G"}); assertThat(page.locator("id=favorite-colors")).hasValues(new Pattern[] { Pattern.compile("R"), Pattern.compile("G") }); ``` diff --git a/docs/src/api/class-page.md b/docs/src/api/class-page.md index 60512f51ca..7a3be809c6 100644 --- a/docs/src/api/class-page.md +++ b/docs/src/api/class-page.md @@ -1041,9 +1041,9 @@ await page.dragAndDrop('#source', '#target', { ``` ```java -page.dragAndDrop("#source", '#target'); +page.dragAndDrop("#source", "#target"); // or specify exact positions relative to the top-left corners of the elements: -page.dragAndDrop("#source", '#target', new Page.DragAndDropOptions() +page.dragAndDrop("#source", "#target", new Page.DragAndDropOptions() .setSourcePosition(34, 7).setTargetPosition(10, 20)); ``` @@ -1716,7 +1716,7 @@ public class Example { public static void main(String[] args) { try (Playwright playwright = Playwright.create()) { BrowserType webkit = playwright.webkit(); - Browser browser = webkit.launch({ headless: false }); + Browser browser = webkit.launch(new BrowserType.LaunchOptions().setHeadless(false)); BrowserContext context = browser.newContext(); Page page = context.newPage(); page.exposeBinding("pageURL", (source, args) -> source.page().url()); @@ -1886,26 +1886,27 @@ public class Example { public static void main(String[] args) { try (Playwright playwright = Playwright.create()) { BrowserType webkit = playwright.webkit(); - Browser browser = webkit.launch({ headless: false }); + Browser browser = webkit.launch(new BrowserType.LaunchOptions().setHeadless(false)); Page page = browser.newPage(); page.exposeFunction("sha256", args -> { - String text = (String) args[0]; - MessageDigest crypto; try { - crypto = MessageDigest.getInstance("SHA-256"); + String text = (String) args[0]; + MessageDigest crypto = MessageDigest.getInstance("SHA-256"); + byte[] token = crypto.digest(text.getBytes(StandardCharsets.UTF_8)); + return Base64.getEncoder().encodeToString(token); } catch (NoSuchAlgorithmException e) { return null; } - byte[] token = crypto.digest(text.getBytes(StandardCharsets.UTF_8)); - return Base64.getEncoder().encodeToString(token); }); - page.setContent("\n" + "\n" + - "
\n"); + "
" + ); page.click("button"); } } @@ -2106,7 +2107,7 @@ const frame = page.frame({ url: /.*domain.*/ }); ``` ```java -Frame frame = page.frameByUrl(Pattern.compile(".*domain.*"); +Frame frame = page.frameByUrl(Pattern.compile(".*domain.*")); ``` ```py @@ -3161,12 +3162,12 @@ await page.getByRole('button', { name: 'Start here' }).click(); ```java // Setup the handler. -page.addLocatorHandler(page.getByText("Sign up to the newsletter"), () => { +page.addLocatorHandler(page.getByText("Sign up to the newsletter"), () -> { page.getByRole(AriaRole.BUTTON, new Page.GetByRoleOptions().setName("No thanks")).click(); }); // Write the test as usual. -page.goto("https://example.com"); +page.navigate("https://example.com"); page.getByRole("button", Page.GetByRoleOptions().setName("Start here")).click(); ``` @@ -3218,12 +3219,12 @@ await page.getByRole('button', { name: 'Start here' }).click(); ```java // Setup the handler. -page.addLocatorHandler(page.getByText("Confirm your security details")), () => { +page.addLocatorHandler(page.getByText("Confirm your security details"), () -> { page.getByRole(AriaRole.BUTTON, new Page.GetByRoleOptions().setName("Remind me later")).click(); }); // Write the test as usual. -page.goto("https://example.com"); +page.navigate("https://example.com"); page.getByRole("button", Page.GetByRoleOptions().setName("Start here")).click(); ``` @@ -3275,12 +3276,12 @@ await page.getByRole('button', { name: 'Start here' }).click(); ```java // Setup the handler. -page.addLocatorHandler(page.locator("body")), () => { +page.addLocatorHandler(page.locator("body"), () -> { page.evaluate("window.removeObstructionsForTestIfNeeded()"); -}, new Page.AddLocatorHandlerOptions.setNoWaitAfter(true)); +}, new Page.AddLocatorHandlerOptions().setNoWaitAfter(true)); // Write the test as usual. -page.goto("https://example.com"); +page.navigate("https://example.com"); page.getByRole("button", Page.GetByRoleOptions().setName("Start here")).click(); ``` @@ -3326,7 +3327,7 @@ await page.addLocatorHandler(page.getByLabel('Close'), async locator => { ``` ```java -page.addLocatorHandler(page.getByLabel("Close"), locator => { +page.addLocatorHandler(page.getByLabel("Close"), locator -> { locator.click(); }, new Page.AddLocatorHandlerOptions().setTimes(1)); ``` diff --git a/docs/src/api/class-pageassertions.md b/docs/src/api/class-pageassertions.md index 5e56907656..8eefd41f02 100644 --- a/docs/src/api/class-pageassertions.md +++ b/docs/src/api/class-pageassertions.md @@ -14,14 +14,14 @@ test('navigates to login', async ({ page }) => { ``` ```java -... +// ... import static com.microsoft.playwright.assertions.PlaywrightAssertions.assertThat; public class TestPage { - ... + // ... @Test void navigatesToLoginPage() { - ... + // ... page.getByText("Sign in").click(); assertThat(page).hasURL(Pattern.compile(".*/login")); } diff --git a/docs/src/api/class-playwrightassertions.md b/docs/src/api/class-playwrightassertions.md index 7a960e34e1..aa4e0a42a4 100644 --- a/docs/src/api/class-playwrightassertions.md +++ b/docs/src/api/class-playwrightassertions.md @@ -35,14 +35,13 @@ def test_status_becomes_submitted(page: Page) -> None: ``` ```java -... import static com.microsoft.playwright.assertions.PlaywrightAssertions.assertThat; public class TestExample { - ... + // ... @Test void statusBecomesSubmitted() { - ... + // ... page.locator("#submit-button").click(); assertThat(page.locator(".status")).hasText("Submitted"); } diff --git a/docs/src/api/params.md b/docs/src/api/params.md index 1f9c03d77a..462b225e6e 100644 --- a/docs/src/api/params.md +++ b/docs/src/api/params.md @@ -1488,19 +1488,19 @@ page.get_by_text(re.compile("^hello$", re.IGNORECASE)) ```java // Matches -page.getByText("world") +page.getByText("world"); // Matches first
-page.getByText("Hello world") +page.getByText("Hello world"); // Matches second
-page.getByText("Hello", new Page.GetByTextOptions().setExact(true)) +page.getByText("Hello", new Page.GetByTextOptions().setExact(true)); // Matches both
s -page.getByText(Pattern.compile("Hello")) +page.getByText(Pattern.compile("Hello")); // Matches second
-page.getByText(Pattern.compile("^hello$", Pattern.CASE_INSENSITIVE)) +page.getByText(Pattern.compile("^hello$", Pattern.CASE_INSENSITIVE)); ``` ```csharp diff --git a/docs/src/emulation.md b/docs/src/emulation.md index d1f7bc3400..12b44a49c8 100644 --- a/docs/src/emulation.md +++ b/docs/src/emulation.md @@ -188,7 +188,7 @@ page.setViewportSize(1600, 1200); // Emulate high-DPI BrowserContext context = browser.newContext(new Browser.NewContextOptions() .setViewportSize(2560, 1440) - .setDeviceScaleFactor(2); + .setDeviceScaleFactor(2)); ``` ```python async @@ -378,7 +378,7 @@ const context = await browser.newContext({ ```java BrowserContext context = browser.newContext(new Browser.NewContextOptions() - .setPermissions(Arrays.asList("notifications")); + .setPermissions(Arrays.asList("notifications"))); ``` ```python async diff --git a/docs/src/locators.md b/docs/src/locators.md index 8ade71efb7..0aa918e53c 100644 --- a/docs/src/locators.md +++ b/docs/src/locators.md @@ -122,7 +122,7 @@ await locator.click(); ```java Locator locator = page.getByRole(AriaRole.BUTTON, - new Page.GetByRoleOptions().setName("Sign in")) + new Page.GetByRoleOptions().setName("Sign in")); locator.hover(); locator.click(); @@ -946,7 +946,7 @@ page.getByRole(AriaRole.LISTITEM) .setName("Product 2")))) .getByRole(AriaRole.BUTTON, new Page.GetByRoleOptions().setName("Add to cart")) - .click() + .click(); ``` ```python async @@ -987,7 +987,7 @@ assertThat(page .getByRole(AriaRole.LISTITEM) .filter(new Locator.FilterOptions() .setHas(page.GetByRole(AriaRole.HEADING, - new Page.GetByRoleOptions().setName("Product 2")))) + new Page.GetByRoleOptions().setName("Product 2"))))) .hasCount(1); ``` @@ -1033,7 +1033,7 @@ assertThat(page .filter(new Locator.FilterOptions() .setHas(page.GetByRole(AriaRole.LIST) .GetByRole(AriaRole.HEADING, - new Page.GetByRoleOptions().setName("Product 2")))) + new Page.GetByRoleOptions().setName("Product 2"))))) .hasCount(1); ``` @@ -1079,7 +1079,7 @@ await expect(page ```java assertThat(page .getByRole(AriaRole.LISTITEM) - .filter(new Locator.FilterOptions().setHasNot(page.getByText("Product 2"))) + .filter(new Locator.FilterOptions().setHasNot(page.getByText("Product 2")))) .hasCount(1); ``` @@ -1356,7 +1356,7 @@ expect(page.get_by_role("listitem")).to_have_count(3) ``` ```java -assertThat(page.getByRole(AriaRole.LISTITEM).hasCount(3); +assertThat(page.getByRole(AriaRole.LISTITEM)).hasCount(3); ``` ```csharp diff --git a/docs/src/mock.md b/docs/src/mock.md index 87ddf2ec96..5c87e91d5b 100644 --- a/docs/src/mock.md +++ b/docs/src/mock.md @@ -195,15 +195,15 @@ await Expect(page.GetByTextAsync("Loquat", new () { Exact = true })).ToBeVisible page.route("*/**/api/v1/fruits", route -> { Response response = route.fetch(); byte[] json = response.body(); - parsed = new Gson().fromJson(json, JsonObject.class) + JsonObject parsed = new Gson().fromJson(new String(json), JsonObject.class); parsed.add(new JsonObject().add("name", "Loquat").add("id", 100)); // Fulfill using the original response, while patching the response body // with the given JSON object. - route.fulfill(new Route.FulfillOptions().setResponse(response).setBody(json.toString())); + route.fulfill(new Route.FulfillOptions().setResponse(response).setBody(parsed.toString())); }); // Go to the page -page.goto("https://demo.playwright.dev/api-mocking"); +page.navigate("https://demo.playwright.dev/api-mocking"); // Assert that the Loquat fruit is visible assertThat(page.getByText("Loquat", new Page.GetByTextOptions().setExact(true))).isVisible(); @@ -294,7 +294,7 @@ page.routeFromHAR(Path.of("./hars/fruit.har"), new RouteFromHAROptions() ); // Go to the page -page.goto("https://demo.playwright.dev/api-mocking"); +page.navigate("https://demo.playwright.dev/api-mocking"); // Assert that the fruit is visible assertThat(page.getByText("Strawberry")).isVisible(); @@ -392,10 +392,11 @@ page.routeFromHAR(Path.of("./hars/fruit.har"), new RouteFromHAROptions() ); // Go to the page -page.goto("https://demo.playwright.dev/api-mocking"); +page.navigate("https://demo.playwright.dev/api-mocking"); // Assert that the Playwright fruit is visible -assertThat(page.getByText("Playwright", new Page.GetByTextOptions().setExact(true))).isVisible(); +assertThat(page.getByText("Playwright", new Page.GetByTextOptions() + .setExact(true))).isVisible(); ``` In the trace of our test we can see that the route was fulfilled from the HAR file and the API was not called. ![trace showing the HAR file being used](https://github.com/microsoft/playwright/assets/13063165/1bd7ab66-ea4f-43c2-a4e5-ca17d4837ff1) diff --git a/docs/src/network.md b/docs/src/network.md index 4d6f229678..33c012d9b5 100644 --- a/docs/src/network.md +++ b/docs/src/network.md @@ -146,8 +146,8 @@ const browser = await chromium.launch({ ```java Browser browser = chromium.launch(new BrowserType.LaunchOptions() .setProxy(new Proxy("http://myproxy.com:3128") - .setUsername('usr') - .setPassword('pwd'))); + .setUsername("usr") + .setPassword("pwd"))); ``` ```python async @@ -627,7 +627,7 @@ page.route("**/title.html", route -> { String body = response.text(); body = body.replace("", "<title>My prefix:"); Map<String, String> headers = response.headers(); - headers.put("content-type": "text/html"); + headers.put("content-type", "text/html"); route.fulfill(new Route.FulfillOptions() // Pass all fields from the response. .setResponse(response) diff --git a/docs/src/pom.md b/docs/src/pom.md index 983598a2c2..5108d5718b 100644 --- a/docs/src/pom.md +++ b/docs/src/pom.md @@ -289,7 +289,7 @@ Page objects can then be used inside a test. ```java import models.SearchPage; import com.microsoft.playwright.*; -... +// ... // In the test Page page = browser.newPage(); diff --git a/docs/src/release-notes-java.md b/docs/src/release-notes-java.md index ae97358611..908a768357 100644 --- a/docs/src/release-notes-java.md +++ b/docs/src/release-notes-java.md @@ -378,7 +378,7 @@ New method [`method: Page.addLocatorHandler`] registers a callback that will be // Setup the handler. page.addLocatorHandler( page.getByRole(AriaRole.BUTTON, new Page.GetByRoleOptions().setName("Hej! You are in control of your cookies.")), - () - > { + () -> { page.getByRole(AriaRole.BUTTON, new Page.GetByRoleOptions().setName("Accept all")).click(); }); // Write the test as usual. @@ -1187,14 +1187,12 @@ Playwright for Java 1.18 introduces [Web-First Assertions](./test-assertions). Consider the following example: ```java -... import static com.microsoft.playwright.assertions.PlaywrightAssertions.assertThat; public class TestExample { - ... @Test void statusBecomesSubmitted() { - ... + // ... page.locator("#submit-button").click(); assertThat(page.locator(".status")).hasText("Submitted"); } @@ -1471,19 +1469,19 @@ button.click("button >> visible=true"); Traces are recorded using the new [`property: BrowserContext.tracing`] API: ```java -Browser browser = chromium.launch(); +Browser browser = playwright.chromium().launch(); BrowserContext context = browser.newContext(); // Start tracing before creating / navigating a page. -context.tracing.start(new Tracing.StartOptions() +context.tracing().start(new Tracing.StartOptions() .setScreenshots(true) - .setSnapshots(true); + .setSnapshots(true)); Page page = context.newPage(); -page.goto("https://playwright.dev"); +page.navigate("https://playwright.dev"); // Stop tracing and export it into a zip archive. -context.tracing.stop(new Tracing.StopOptions() +context.tracing().stop(new Tracing.StopOptions() .setPath(Paths.get("trace.zip"))); ``` diff --git a/docs/src/screenshots.md b/docs/src/screenshots.md index d1c7e0e04f..ba50a852a4 100644 --- a/docs/src/screenshots.md +++ b/docs/src/screenshots.md @@ -21,7 +21,7 @@ page.screenshot(path="screenshot.png") ```java page.screenshot(new Page.ScreenshotOptions() - .setPath(Paths.get("screenshot.png"))) + .setPath(Paths.get("screenshot.png"))); ``` ```csharp diff --git a/docs/src/test-runners-java.md b/docs/src/test-runners-java.md index 1aaa7135c4..ed1d3d81e5 100644 --- a/docs/src/test-runners-java.md +++ b/docs/src/test-runners-java.md @@ -202,7 +202,7 @@ You can use a Gradle build configuration script, written in Groovy or Kotlin. }> <TabItem value="gradle"> -```java +```groovy plugins { application id 'java' @@ -234,7 +234,7 @@ test { </TabItem> <TabItem value="gradle-kotlin"> -```java +```groovy plugins { application id("java") diff --git a/utils/doclint/linting-code-snippets/cli.js b/utils/doclint/linting-code-snippets/cli.js index da193e5876..146646a1f0 100644 --- a/utils/doclint/linting-code-snippets/cli.js +++ b/utils/doclint/linting-code-snippets/cli.js @@ -209,6 +209,16 @@ class CSharpLintingService extends LintingService { } } +class JavaLintingService extends LintingService { + supports(codeLang) { + return codeLang === 'java'; + } + + async lint(snippets) { + return await this.spawnAsync('java', ['-jar', path.join(__dirname, 'java', 'target', 'java-syntax-checker-1.0-SNAPSHOT.jar')], snippets, path.join(__dirname, 'java')) + } +} + class LintingServiceFactory { constructor() { /** @type {LintingService[]} */ @@ -219,6 +229,7 @@ class LintingServiceFactory { this.services.push( new PythonLintingService(), new CSharpLintingService(), + new JavaLintingService(), ); } this._metrics = {}; diff --git a/utils/doclint/linting-code-snippets/java/.gitignore b/utils/doclint/linting-code-snippets/java/.gitignore new file mode 100644 index 0000000000..8b8c81d731 --- /dev/null +++ b/utils/doclint/linting-code-snippets/java/.gitignore @@ -0,0 +1,2 @@ +target/ +dependency-reduced-pom.xml diff --git a/utils/doclint/linting-code-snippets/java/pom.xml b/utils/doclint/linting-code-snippets/java/pom.xml new file mode 100644 index 0000000000..ec040ad677 --- /dev/null +++ b/utils/doclint/linting-code-snippets/java/pom.xml @@ -0,0 +1,53 @@ +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + + <groupId>com.example</groupId> + <artifactId>java-syntax-checker</artifactId> + <version>1.0-SNAPSHOT</version> + + <properties> + <maven.compiler.source>15</maven.compiler.source> + <maven.compiler.target>15</maven.compiler.target> + <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> + </properties> + + <dependencies> + <dependency> + <groupId>com.github.javaparser</groupId> + <artifactId>javaparser-core</artifactId> + <version>3.26.2</version> + </dependency> + <dependency> + <groupId>com.google.code.gson</groupId> + <artifactId>gson</artifactId> + <version>2.11.0</version> + </dependency> + </dependencies> + + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-shade-plugin</artifactId> + <version>3.5.1</version> + <executions> + <execution> + <phase>package</phase> + <goals> + <goal>shade</goal> + </goals> + <configuration> + <transformers> + <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> + <mainClass>JavaSyntaxChecker</mainClass> + </transformer> + </transformers> + </configuration> + </execution> + </executions> + </plugin> + </plugins> + </build> +</project> \ No newline at end of file diff --git a/utils/doclint/linting-code-snippets/java/src/main/java/JavaSyntaxChecker.java b/utils/doclint/linting-code-snippets/java/src/main/java/JavaSyntaxChecker.java new file mode 100644 index 0000000000..be2a5bbe35 --- /dev/null +++ b/utils/doclint/linting-code-snippets/java/src/main/java/JavaSyntaxChecker.java @@ -0,0 +1,110 @@ +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; +import com.github.javaparser.JavaParser; +import com.github.javaparser.Problem; +import com.github.javaparser.ParseResult; +import com.github.javaparser.ast.CompilationUnit; +import com.github.javaparser.ParserConfiguration; +import com.github.javaparser.StaticJavaParser; + +import java.io.FileReader; +import java.io.IOException; +import java.lang.reflect.Type; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.regex.Pattern; +import java.util.stream.Collectors; + +public class JavaSyntaxChecker { + public static void main(String[] args) { + if (args.length == 0) { + System.out.println("Error: Please provide the path to the JSON file"); + return; + } + + String codeSnippetsPath = args[args.length - 1]; + List<CodeSnippet> codeSnippets = readCodeSnippets(codeSnippetsPath); + if (codeSnippets == null) { + System.out.println("Error: codeSnippets is null"); + return; + } + + List<Map<String, Object>> output = new ArrayList<>(); + + ParserConfiguration config = new ParserConfiguration(); + config.setLanguageLevel(ParserConfiguration.LanguageLevel.JAVA_17); + + for (CodeSnippet codeSnippet : codeSnippets) { + String cleanedCode = cleanSnippet(codeSnippet.code); + ParseResult<CompilationUnit> parseResult = new JavaParser(config).parse(cleanedCode); + List<Problem> syntaxErrors = parseResult.getProblems(); + + if (!syntaxErrors.isEmpty()) { + output.add(Map.of( + "status", "error", + "error", String.join("\n", syntaxErrors.stream() + .map(Problem::getMessage) + .collect(Collectors.toList())) + )); + } else { + output.add(Map.of("status", "ok")); + } + } + + System.out.println(new Gson().toJson(output)); + } + + private static String removeImports(String code) { + // Remove import statements + return Pattern.compile("^import.*;$", Pattern.MULTILINE) + .matcher(code) + .replaceAll(""); + } + + private static String cleanSnippet(String code) { + // if it contains "public class" then it's a full class, return immediately + if (code.contains("public class")) { + return code; + } + code = removeImports(code); + String wrappedCode = """ + import com.microsoft.playwright.*; + import static com.microsoft.playwright.assertions.PlaywrightAssertions.*; + + public class Example { + public static void main(String[] args) { + try (Playwright playwright = Playwright.create()) { + Browser browser = playwright.chromium().launch(); + BrowserContext context = browser.newContext(); + Page page = context.newPage(); + %s + } + } + } + """.formatted(code); + return wrappedCode; + } + + private static List<CodeSnippet> readCodeSnippets(String filePath) { + try (FileReader reader = new FileReader(filePath)) { + Type listType = new TypeToken<ArrayList<CodeSnippet>>(){}.getType(); + return new Gson().fromJson(reader, listType); + } catch (IOException e) { + e.printStackTrace(); + return null; + } + } +} + +class CodeSnippet { + String filePath; + String codeLang; + String code; + + public CodeSnippet(String filePath, String codeLang, String code) { + this.filePath = filePath; + this.codeLang = codeLang; + this.code = code; + } +} \ No newline at end of file From 10d6812058988f78672bc94eb0ee0985784d37fa Mon Sep 17 00:00:00 2001 From: Dmitry Gozman <dgozman@gmail.com> Date: Fri, 4 Oct 2024 04:54:56 -0700 Subject: [PATCH 149/151] chore: clear `pendingDocument()` for the same-document navigation (#32954) WebKit notifies about a pending same-document navigation through `Page.frameScheduledNavigation`, and committing it should clear the `pendingDocument()`. Extracted from #32899. --- packages/playwright-core/src/server/frames.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/packages/playwright-core/src/server/frames.ts b/packages/playwright-core/src/server/frames.ts index 7dc992813b..d107a7f981 100644 --- a/packages/playwright-core/src/server/frames.ts +++ b/packages/playwright-core/src/server/frames.ts @@ -248,6 +248,11 @@ export class FrameManager { const frame = this._frames.get(frameId); if (!frame) return; + const pending = frame.pendingDocument(); + if (pending && pending.documentId === undefined && pending.request === undefined) { + // WebKit has notified about the same-document navigation being requested, so clear it. + frame.setPendingDocument(undefined); + } frame._url = url; const navigationEvent: NavigationEvent = { url, name: frame._name, isPublic: true }; this._fireInternalFrameNavigation(frame, navigationEvent); From ff0c4989040c00e8f70f84831aed6549343dfac6 Mon Sep 17 00:00:00 2001 From: Simon Knott <info@simonknott.de> Date: Fri, 4 Oct 2024 14:18:21 +0200 Subject: [PATCH 150/151] fix(ct-vue): update default slot should work (#32952) Closes https://github.com/microsoft/playwright/issues/32809 We were writing onto the wrong object. --- packages/playwright-ct-vue/registerSource.mjs | 2 +- .../ct-vue-vite/src/components/SlotDefaultValue.vue | 3 +++ .../components/ct-vue-vite/tests/slots/slots.spec.js | 11 +++++++++++ .../components/ct-vue-vite/tests/slots/slots.spec.ts | 11 +++++++++++ 4 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 tests/components/ct-vue-vite/src/components/SlotDefaultValue.vue diff --git a/packages/playwright-ct-vue/registerSource.mjs b/packages/playwright-ct-vue/registerSource.mjs index 07ce5298f4..33bc74e731 100644 --- a/packages/playwright-ct-vue/registerSource.mjs +++ b/packages/playwright-ct-vue/registerSource.mjs @@ -188,7 +188,7 @@ function __pwWrapFunctions(slots) { for (const [key, value] of Object.entries(slots || {})) slotsWithRenderFunctions[key] = () => [value]; } else if (slots?.length) { - slots['default'] = () => slots; + slotsWithRenderFunctions['default'] = () => slots; } return slotsWithRenderFunctions; } diff --git a/tests/components/ct-vue-vite/src/components/SlotDefaultValue.vue b/tests/components/ct-vue-vite/src/components/SlotDefaultValue.vue new file mode 100644 index 0000000000..c5944a3f8a --- /dev/null +++ b/tests/components/ct-vue-vite/src/components/SlotDefaultValue.vue @@ -0,0 +1,3 @@ +<template> + <slot>default value</slot> +</template> diff --git a/tests/components/ct-vue-vite/tests/slots/slots.spec.js b/tests/components/ct-vue-vite/tests/slots/slots.spec.js index a33c9dac92..7d36d9733b 100644 --- a/tests/components/ct-vue-vite/tests/slots/slots.spec.js +++ b/tests/components/ct-vue-vite/tests/slots/slots.spec.js @@ -2,6 +2,7 @@ import { test, expect } from '@playwright/experimental-ct-vue'; import DefaultSlot from '@/components/DefaultSlot.vue'; import NamedSlots from '@/components/NamedSlots.vue'; import Button from '@/components/Button.vue'; +import SlotDefaultValue from "@/components/SlotDefaultValue.vue"; test('render a default slot', async ({ mount }) => { const component = await mount(DefaultSlot, { @@ -49,3 +50,13 @@ test('render a component with a named slot', async ({ mount }) => { await expect(component).toContainText('Main Content'); await expect(component).toContainText('Footer'); }); + +test('updating default slot should work', { annotation: { type: 'issue', description: 'https://github.com/microsoft/playwright/issues/32809' } }, async ({ mount }) => { + const slots = { default: 'foo' }; + + const component = await mount(SlotDefaultValue, { slots }); + await expect(component).toHaveText('foo'); + + await component.update({ slots }); + await expect(component).toHaveText('foo'); +}); diff --git a/tests/components/ct-vue-vite/tests/slots/slots.spec.ts b/tests/components/ct-vue-vite/tests/slots/slots.spec.ts index a33c9dac92..7d36d9733b 100644 --- a/tests/components/ct-vue-vite/tests/slots/slots.spec.ts +++ b/tests/components/ct-vue-vite/tests/slots/slots.spec.ts @@ -2,6 +2,7 @@ import { test, expect } from '@playwright/experimental-ct-vue'; import DefaultSlot from '@/components/DefaultSlot.vue'; import NamedSlots from '@/components/NamedSlots.vue'; import Button from '@/components/Button.vue'; +import SlotDefaultValue from "@/components/SlotDefaultValue.vue"; test('render a default slot', async ({ mount }) => { const component = await mount(DefaultSlot, { @@ -49,3 +50,13 @@ test('render a component with a named slot', async ({ mount }) => { await expect(component).toContainText('Main Content'); await expect(component).toContainText('Footer'); }); + +test('updating default slot should work', { annotation: { type: 'issue', description: 'https://github.com/microsoft/playwright/issues/32809' } }, async ({ mount }) => { + const slots = { default: 'foo' }; + + const component = await mount(SlotDefaultValue, { slots }); + await expect(component).toHaveText('foo'); + + await component.update({ slots }); + await expect(component).toHaveText('foo'); +}); From 1b457b1ff87fa2d16fcc04e704408a2dc4a5593f Mon Sep 17 00:00:00 2001 From: Simon Knott <info@simonknott.de> Date: Fri, 4 Oct 2024 14:18:38 +0200 Subject: [PATCH 151/151] fix(html reporter): render annotation newlines (#32948) Closes https://github.com/microsoft/playwright/issues/32925. Before this change, newlines in annotation descriptions weren't respected. This change makes them shown. Here's how it looks for this annotation: ```ts test.info().annotations.push({ type: 'user story', description: '\n- user goes to the page\n- user clicks the button\n- user sees the result', }); ``` Before: <img width="1071" alt="Screenshot 2024-10-04 at 09 55 15" src="https://github.com/user-attachments/assets/89e74ff5-ea83-48da-a33b-833423916d95"> After: <img width="1031" alt="Screenshot 2024-10-04 at 09 51 08" src="https://github.com/user-attachments/assets/0f2914e8-bd88-4970-aa68-6a5a9828295c"> --- packages/html-reporter/src/testCaseView.css | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/html-reporter/src/testCaseView.css b/packages/html-reporter/src/testCaseView.css index 90e2f4057b..56be1d9620 100644 --- a/packages/html-reporter/src/testCaseView.css +++ b/packages/html-reporter/src/testCaseView.css @@ -61,6 +61,7 @@ align-items: center; padding: 0 8px; line-height: 24px; + white-space: pre-wrap; } @media only screen and (max-width: 600px) {