diff --git a/dev-packages/browser-integration-tests/README.md b/dev-packages/browser-integration-tests/README.md index b24bdfb86ee3..0d943e8de5f0 100644 --- a/dev-packages/browser-integration-tests/README.md +++ b/dev-packages/browser-integration-tests/README.md @@ -14,7 +14,7 @@ or `init.js` is not defined in a case folder. `subject.js` contains the logic that sets up the environment to be tested. It also can be defined locally and as a group fallback. Unlike `template.hbs` and `init.js`, it's not required to be defined for a group, as there may be cases that -does not require a subject, instead the logic is injected using `injectScriptAndGetEvents` from `utils/helpers.ts`. +does not require a subject. `test.ts` is required for each test case, which contains the assertions (and if required the script injection logic). For every case, any set of `init.js`, `template.hbs` and `subject.js` can be defined locally, and each one of them will @@ -22,8 +22,8 @@ have precedence over the default definitions of the test group. To test page multi-page navigations, you can specify additional `page-*.html` (e.g. `page-0.html`, `page-1.html`) files. These will also be compiled and initialized with the same `init.js` and `subject.js` files that are applied to -`template.hbs/html`. Note: `page-*.html` file lookup **doesn not** fall back to the parent directories, meaning that -page files have to be directly in the `test.ts` directory. +`template.hbs/html`. Note: `page-*.html` file lookup **does not** fall back to the parent directories, meaning that page +files have to be directly in the `test.ts` directory. ``` suites/ diff --git a/dev-packages/browser-integration-tests/package.json b/dev-packages/browser-integration-tests/package.json index 82893df63610..dd383ed7f5d7 100644 --- a/dev-packages/browser-integration-tests/package.json +++ b/dev-packages/browser-integration-tests/package.json @@ -40,7 +40,7 @@ }, "dependencies": { "@babel/preset-typescript": "^7.16.7", - "@playwright/test": "^1.40.1", + "@playwright/test": "^1.43.1", "@sentry-internal/rrweb": "2.11.0", "@sentry/browser": "8.0.0-beta.4", "axios": "1.6.7", diff --git a/dev-packages/browser-integration-tests/suites/public-api/instrumentation/onError/non-string-arg/subject.js b/dev-packages/browser-integration-tests/suites/public-api/instrumentation/onError/non-string-arg/subject.js deleted file mode 100644 index ad794db023df..000000000000 --- a/dev-packages/browser-integration-tests/suites/public-api/instrumentation/onError/non-string-arg/subject.js +++ /dev/null @@ -1,8 +0,0 @@ -function run() { - window.onerror({ - type: 'error', - otherKey: 'hi', - }); -} - -run(); diff --git a/dev-packages/browser-integration-tests/suites/public-api/instrumentation/onError/non-string-arg/test.ts b/dev-packages/browser-integration-tests/suites/public-api/instrumentation/onError/non-string-arg/test.ts index ed2399a43790..681d5db8bf02 100644 --- a/dev-packages/browser-integration-tests/suites/public-api/instrumentation/onError/non-string-arg/test.ts +++ b/dev-packages/browser-integration-tests/suites/public-api/instrumentation/onError/non-string-arg/test.ts @@ -2,14 +2,32 @@ import { expect } from '@playwright/test'; import type { Event } from '@sentry/types'; import { sentryTest } from '../../../../../utils/fixtures'; -import { getFirstSentryEnvelopeRequest } from '../../../../../utils/helpers'; +import { getFirstSentryEnvelopeRequest, runScriptInSandbox } from '../../../../../utils/helpers'; sentryTest( 'should catch onerror calls with non-string first argument gracefully', - async ({ getLocalTestPath, page }) => { + async ({ getLocalTestPath, page, browserName }) => { + if (browserName === 'webkit') { + // This test fails on Webkit as erros thrown from `runScriptInSandbox` are Script Errors and skipped by Sentry + sentryTest.skip(); + } + const url = await getLocalTestPath({ testDir: __dirname }); - const eventData = await getFirstSentryEnvelopeRequest(page, url); + await page.goto(url); + + const errorEventPromise = getFirstSentryEnvelopeRequest(page); + + await runScriptInSandbox(page, { + content: ` + throw { + type: 'Error', + otherKey: 'otherValue', + }; + `, + }); + + const eventData = await errorEventPromise; expect(eventData.exception?.values).toHaveLength(1); expect(eventData.exception?.values?.[0]).toMatchObject({ diff --git a/dev-packages/browser-integration-tests/suites/public-api/instrumentation/onError/rethrown/subject.js b/dev-packages/browser-integration-tests/suites/public-api/instrumentation/onError/rethrown/subject.js deleted file mode 100644 index 44a6e2d739c5..000000000000 --- a/dev-packages/browser-integration-tests/suites/public-api/instrumentation/onError/rethrown/subject.js +++ /dev/null @@ -1,17 +0,0 @@ -function run() { - try { - try { - foo(); - } catch (e) { - Sentry.captureException(e); - throw e; // intentionally re-throw - } - } catch (e) { - // simulate window.onerror without generating a Script error - window.onerror('error', 'file.js', 1, 1, e); - } -} - -run(); - -Sentry.captureException(new Error('error 2')); diff --git a/dev-packages/browser-integration-tests/suites/public-api/instrumentation/onError/rethrown/test.ts b/dev-packages/browser-integration-tests/suites/public-api/instrumentation/onError/rethrown/test.ts index 9c6209d6ea61..01b319e759b2 100644 --- a/dev-packages/browser-integration-tests/suites/public-api/instrumentation/onError/rethrown/test.ts +++ b/dev-packages/browser-integration-tests/suites/public-api/instrumentation/onError/rethrown/test.ts @@ -2,14 +2,41 @@ import { expect } from '@playwright/test'; import type { Event } from '@sentry/types'; import { sentryTest } from '../../../../../utils/fixtures'; -import { getMultipleSentryEnvelopeRequests } from '../../../../../utils/helpers'; +import { getMultipleSentryEnvelopeRequests, runScriptInSandbox } from '../../../../../utils/helpers'; sentryTest( 'should NOT catch an exception already caught [but rethrown] via Sentry.captureException', - async ({ getLocalTestPath, page }) => { + async ({ getLocalTestPath, page, browserName }) => { + if (browserName === 'webkit') { + // This test fails on Webkit as erros thrown from `runScriptInSandbox` are Script Errors and skipped by Sentry + sentryTest.skip(); + } + const url = await getLocalTestPath({ testDir: __dirname }); - const events = await getMultipleSentryEnvelopeRequests(page, 2, { url }); + await page.goto(url); + + const errorEventsPromise = getMultipleSentryEnvelopeRequests(page, 2); + + await runScriptInSandbox(page, { + content: ` + try { + try { + foo(); + } catch (e) { + Sentry.captureException(e); + throw e; // intentionally re-throw + } + } catch (e) { + // simulate window.onerror without generating a Script error + window.onerror('error', 'file.js', 1, 1, e); + } + + Sentry.captureException(new Error('error 2')); + `, + }); + + const events = await errorEventsPromise; expect(events[0].exception?.values).toHaveLength(1); expect(events[0].exception?.values?.[0]).toMatchObject({ diff --git a/dev-packages/browser-integration-tests/suites/public-api/instrumentation/onError/syntax-errors/subject.js b/dev-packages/browser-integration-tests/suites/public-api/instrumentation/onError/syntax-errors/subject.js deleted file mode 100644 index ece68fe4890e..000000000000 --- a/dev-packages/browser-integration-tests/suites/public-api/instrumentation/onError/syntax-errors/subject.js +++ /dev/null @@ -1,10 +0,0 @@ -function run() { - try { - eval('foo{};'); - } catch (e) { - // simulate window.onerror without generating a Script error - window.onerror('error', 'file.js', 1, 1, e); - } -} - -run(); diff --git a/dev-packages/browser-integration-tests/suites/public-api/instrumentation/onError/syntax-errors/test.ts b/dev-packages/browser-integration-tests/suites/public-api/instrumentation/onError/syntax-errors/test.ts index 4d55130e7190..2b6cc09be8a2 100644 --- a/dev-packages/browser-integration-tests/suites/public-api/instrumentation/onError/syntax-errors/test.ts +++ b/dev-packages/browser-integration-tests/suites/public-api/instrumentation/onError/syntax-errors/test.ts @@ -2,12 +2,27 @@ import { expect } from '@playwright/test'; import type { Event } from '@sentry/types'; import { sentryTest } from '../../../../../utils/fixtures'; -import { getFirstSentryEnvelopeRequest } from '../../../../../utils/helpers'; +import { getFirstSentryEnvelopeRequest, runScriptInSandbox } from '../../../../../utils/helpers'; + +sentryTest('should catch syntax errors', async ({ getLocalTestPath, page, browserName }) => { + if (browserName === 'webkit') { + // This test fails on Webkit as erros thrown from `runScriptInSandbox` are Script Errors and skipped by Sentry + sentryTest.skip(); + } -sentryTest('should catch syntax errors', async ({ getLocalTestPath, page }) => { const url = await getLocalTestPath({ testDir: __dirname }); - const eventData = await getFirstSentryEnvelopeRequest(page, url); + await page.goto(url); + + const errorEventPromise = getFirstSentryEnvelopeRequest(page); + + await runScriptInSandbox(page, { + content: ` + foo{}; // SyntaxError + `, + }); + + const eventData = await errorEventPromise; expect(eventData.exception?.values).toHaveLength(1); expect(eventData.exception?.values?.[0]).toMatchObject({ diff --git a/dev-packages/browser-integration-tests/suites/public-api/instrumentation/onError/thrown-errors/subject.js b/dev-packages/browser-integration-tests/suites/public-api/instrumentation/onError/thrown-errors/subject.js deleted file mode 100644 index 03dd4333efc5..000000000000 --- a/dev-packages/browser-integration-tests/suites/public-api/instrumentation/onError/thrown-errors/subject.js +++ /dev/null @@ -1,10 +0,0 @@ -function run() { - try { - throw new Error('realError'); - } catch (e) { - // simulate window.onerror without generating a Script error - window.onerror('error', 'file.js', 1, 1, e); - } -} - -run(); diff --git a/dev-packages/browser-integration-tests/suites/public-api/instrumentation/onError/thrown-errors/test.ts b/dev-packages/browser-integration-tests/suites/public-api/instrumentation/onError/thrown-errors/test.ts index d9b574fadfc5..17dd6c650b43 100644 --- a/dev-packages/browser-integration-tests/suites/public-api/instrumentation/onError/thrown-errors/test.ts +++ b/dev-packages/browser-integration-tests/suites/public-api/instrumentation/onError/thrown-errors/test.ts @@ -2,12 +2,27 @@ import { expect } from '@playwright/test'; import type { Event } from '@sentry/types'; import { sentryTest } from '../../../../../utils/fixtures'; -import { getFirstSentryEnvelopeRequest } from '../../../../../utils/helpers'; +import { getFirstSentryEnvelopeRequest, runScriptInSandbox } from '../../../../../utils/helpers'; + +sentryTest('should catch thrown errors', async ({ getLocalTestPath, page, browserName }) => { + if (browserName === 'webkit') { + // This test fails on Webkit as erros thrown from `runScriptInSandbox` are Script Errors and skipped by Sentry + sentryTest.skip(); + } -sentryTest('should catch thrown errors', async ({ getLocalTestPath, page }) => { const url = await getLocalTestPath({ testDir: __dirname }); - const eventData = await getFirstSentryEnvelopeRequest(page, url); + await page.goto(url); + + const errorEventPromise = getFirstSentryEnvelopeRequest(page); + + await runScriptInSandbox(page, { + content: ` + throw new Error('realError'); + `, + }); + + const eventData = await errorEventPromise; expect(eventData.exception?.values).toHaveLength(1); expect(eventData.exception?.values?.[0]).toMatchObject({ diff --git a/dev-packages/browser-integration-tests/suites/public-api/instrumentation/onError/thrown-objects/subject.js b/dev-packages/browser-integration-tests/suites/public-api/instrumentation/onError/thrown-objects/subject.js deleted file mode 100644 index 1fb30ff3e221..000000000000 --- a/dev-packages/browser-integration-tests/suites/public-api/instrumentation/onError/thrown-objects/subject.js +++ /dev/null @@ -1,10 +0,0 @@ -function run() { - try { - throw { error: 'stuff is broken', somekey: 'ok' }; - } catch (e) { - // simulate window.onerror without generating a Script error - window.onerror('error', 'file.js', 1, 1, e); - } -} - -run(); diff --git a/dev-packages/browser-integration-tests/suites/public-api/instrumentation/onError/thrown-objects/test.ts b/dev-packages/browser-integration-tests/suites/public-api/instrumentation/onError/thrown-objects/test.ts index 326d7daa41fc..4ed03991ff58 100644 --- a/dev-packages/browser-integration-tests/suites/public-api/instrumentation/onError/thrown-objects/test.ts +++ b/dev-packages/browser-integration-tests/suites/public-api/instrumentation/onError/thrown-objects/test.ts @@ -2,12 +2,29 @@ import { expect } from '@playwright/test'; import type { Event } from '@sentry/types'; import { sentryTest } from '../../../../../utils/fixtures'; -import { getFirstSentryEnvelopeRequest } from '../../../../../utils/helpers'; +import { getFirstSentryEnvelopeRequest, runScriptInSandbox } from '../../../../../utils/helpers'; + +sentryTest('should catch thrown objects', async ({ getLocalTestPath, page, browserName }) => { + if (browserName === 'webkit') { + // This test fails on Webkit as erros thrown from `runScriptInSandbox` are Script Errors and skipped by Sentry + sentryTest.skip(); + } -sentryTest('should catch thrown objects', async ({ getLocalTestPath, page }) => { const url = await getLocalTestPath({ testDir: __dirname }); - const eventData = await getFirstSentryEnvelopeRequest(page, url); + await page.goto(url); + + const errorEventPromise = getFirstSentryEnvelopeRequest(page); + + await runScriptInSandbox(page, { + content: ` + throw { + error: 'stuff is broken', + somekey: 'ok' + };`, + }); + + const eventData = await errorEventPromise; expect(eventData.exception?.values).toHaveLength(1); expect(eventData.exception?.values?.[0]).toMatchObject({ diff --git a/dev-packages/browser-integration-tests/suites/public-api/instrumentation/onError/thrown-strings/subject.js b/dev-packages/browser-integration-tests/suites/public-api/instrumentation/onError/thrown-strings/subject.js deleted file mode 100644 index 9704f713714f..000000000000 --- a/dev-packages/browser-integration-tests/suites/public-api/instrumentation/onError/thrown-strings/subject.js +++ /dev/null @@ -1,10 +0,0 @@ -function run() { - try { - throw 'stringError'; - } catch (e) { - // simulate window.onerror without generating a Script error - window.onerror('error', 'file.js', 1, 1, e); - } -} - -run(); diff --git a/dev-packages/browser-integration-tests/suites/public-api/instrumentation/onError/thrown-strings/test.ts b/dev-packages/browser-integration-tests/suites/public-api/instrumentation/onError/thrown-strings/test.ts index a52d70f30095..326cf414f0f8 100644 --- a/dev-packages/browser-integration-tests/suites/public-api/instrumentation/onError/thrown-strings/test.ts +++ b/dev-packages/browser-integration-tests/suites/public-api/instrumentation/onError/thrown-strings/test.ts @@ -2,12 +2,27 @@ import { expect } from '@playwright/test'; import type { Event } from '@sentry/types'; import { sentryTest } from '../../../../../utils/fixtures'; -import { getFirstSentryEnvelopeRequest } from '../../../../../utils/helpers'; +import { getFirstSentryEnvelopeRequest, runScriptInSandbox } from '../../../../../utils/helpers'; + +sentryTest('should catch thrown strings', async ({ getLocalTestPath, page, browserName }) => { + if (browserName === 'webkit') { + // This test fails on Webkit as erros thrown from `runScriptInSandbox` are Script Errors and skipped by Sentry + sentryTest.skip(); + } -sentryTest('should catch thrown strings', async ({ getLocalTestPath, page }) => { const url = await getLocalTestPath({ testDir: __dirname }); - const eventData = await getFirstSentryEnvelopeRequest(page, url); + await page.goto(url); + + const errorEventPromise = getFirstSentryEnvelopeRequest(page); + + await runScriptInSandbox(page, { + content: ` + throw 'stringError'; + `, + }); + + const eventData = await errorEventPromise; expect(eventData.exception?.values).toHaveLength(1); expect(eventData.exception?.values?.[0]).toMatchObject({ diff --git a/dev-packages/browser-integration-tests/suites/public-api/startSpan/error-sync/subject.js b/dev-packages/browser-integration-tests/suites/public-api/startSpan/error-sync/subject.js deleted file mode 100644 index 55d9bf76d224..000000000000 --- a/dev-packages/browser-integration-tests/suites/public-api/startSpan/error-sync/subject.js +++ /dev/null @@ -1,9 +0,0 @@ -function run() { - Sentry.startSpan({ name: 'parent_span' }, () => { - throw new Error('Sync Error'); - }); -} - -// using `setTimeout` here because otherwise the thrown error will be -// thrown as a generic "Script Error." instead of the actual error". -setTimeout(run); diff --git a/dev-packages/browser-integration-tests/suites/public-api/startSpan/error-sync/test.ts b/dev-packages/browser-integration-tests/suites/public-api/startSpan/error-sync/test.ts index 2c1d92ebbe00..bb7b3b43c516 100644 --- a/dev-packages/browser-integration-tests/suites/public-api/startSpan/error-sync/test.ts +++ b/dev-packages/browser-integration-tests/suites/public-api/startSpan/error-sync/test.ts @@ -2,21 +2,48 @@ import { expect } from '@playwright/test'; import type { Event } from '@sentry/types'; import { sentryTest } from '../../../../utils/fixtures'; -import { getMultipleSentryEnvelopeRequests, shouldSkipTracingTest } from '../../../../utils/helpers'; +import { + getMultipleSentryEnvelopeRequests, + runScriptInSandbox, + shouldSkipTracingTest, +} from '../../../../utils/helpers'; -sentryTest('should capture an error within a sync startSpan callback', async ({ getLocalTestPath, page }) => { - if (shouldSkipTracingTest()) { - sentryTest.skip(); - } +sentryTest( + 'should capture an error within a sync startSpan callback', + async ({ getLocalTestPath, page, browserName }) => { + if (browserName === 'webkit') { + // This test fails on Webkit as erros thrown from `runScriptInSandbox` are Script Errors and skipped by Sentry + sentryTest.skip(); + } - const url = await getLocalTestPath({ testDir: __dirname }); - const gotoPromise = page.goto(url); - const envelopePromise = getMultipleSentryEnvelopeRequests(page, 2); + if (shouldSkipTracingTest()) { + sentryTest.skip(); + } - const [, events] = await Promise.all([gotoPromise, envelopePromise]); - const txn = events.find(event => event.type === 'transaction'); - const err = events.find(event => !event.type); + const url = await getLocalTestPath({ testDir: __dirname }); - expect(txn).toMatchObject({ transaction: 'parent_span' }); - expect(err?.exception?.values?.[0]?.value).toBe('Sync Error'); -}); + await page.goto(url); + + const errorEventsPromise = getMultipleSentryEnvelopeRequests(page, 2); + + await runScriptInSandbox(page, { + content: ` + function run() { + Sentry.startSpan({ name: 'parent_span' }, () => { + throw new Error('Sync Error'); + }); + } + + setTimeout(run); + `, + }); + + const events = await errorEventsPromise; + + const txn = events.find(event => event.type === 'transaction'); + const err = events.find(event => !event.type); + + expect(txn).toMatchObject({ transaction: 'parent_span' }); + expect(err?.exception?.values?.[0]?.value).toBe('Sync Error'); + }, +); diff --git a/dev-packages/browser-integration-tests/suites/stacktraces/regular_fn_identifiers/test.ts b/dev-packages/browser-integration-tests/suites/stacktraces/regular_fn_identifiers/test.ts index 66f8286a4b5e..6ba6e15e6bd2 100644 --- a/dev-packages/browser-integration-tests/suites/stacktraces/regular_fn_identifiers/test.ts +++ b/dev-packages/browser-integration-tests/suites/stacktraces/regular_fn_identifiers/test.ts @@ -31,7 +31,8 @@ sentryTest( { function: '?' }, { function: 'qux' }, { function: 'qux/<' }, - { function: 'qux/ { - throw new Error('Error during pageload'); -}, 100); diff --git a/dev-packages/browser-integration-tests/suites/tracing/browserTracingIntegration/error/test.ts b/dev-packages/browser-integration-tests/suites/tracing/browserTracingIntegration/error/test.ts index df684872e7c0..581f0fd206dc 100644 --- a/dev-packages/browser-integration-tests/suites/tracing/browserTracingIntegration/error/test.ts +++ b/dev-packages/browser-integration-tests/suites/tracing/browserTracingIntegration/error/test.ts @@ -1,11 +1,20 @@ import { expect } from '@playwright/test'; import type { Event } from '@sentry/types'; import { sentryTest } from '../../../../utils/fixtures'; -import { getMultipleSentryEnvelopeRequests, shouldSkipTracingTest } from '../../../../utils/helpers'; +import { + getMultipleSentryEnvelopeRequests, + runScriptInSandbox, + shouldSkipTracingTest, +} from '../../../../utils/helpers'; sentryTest( 'should put the pageload transaction name onto an error event caught during pageload', - async ({ getLocalTestPath, page }) => { + async ({ getLocalTestPath, page, browserName }) => { + if (browserName === 'webkit') { + // This test fails on Webkit as erros thrown from `runScriptInSandbox` are Script Errors and skipped by Sentry + sentryTest.skip(); + } + if (shouldSkipTracingTest()) { sentryTest.skip(); } @@ -14,7 +23,15 @@ sentryTest( await page.goto(url); - const [e1, e2] = await getMultipleSentryEnvelopeRequests(page, 2); + const errorEventsPromise = getMultipleSentryEnvelopeRequests(page, 2); + + await runScriptInSandbox(page, { + content: ` + throw new Error('Error during pageload'); + `, + }); + + const [e1, e2] = await errorEventsPromise; const pageloadTxnEvent = e1.type === 'transaction' ? e1 : e2; const errorEvent = e1.type === 'transaction' ? e2 : e1; diff --git a/dev-packages/browser-integration-tests/utils/helpers.ts b/dev-packages/browser-integration-tests/utils/helpers.ts index b4fe7d2607ff..0e888a708f00 100644 --- a/dev-packages/browser-integration-tests/utils/helpers.ts +++ b/dev-packages/browser-integration-tests/utils/helpers.ts @@ -145,14 +145,27 @@ export const countEnvelopes = async ( }; /** - * Run script at the given path inside the test environment. + * Run script inside the test environment. + * This is useful for throwing errors in the test environment. + * + * Errors thrown from this function are not guaranteed to be captured by Sentry, especially in Webkit. * * @param {Page} page - * @param {string} path + * @param {{ path?: string; content?: string }} impl * @return {*} {Promise} */ -async function runScriptInSandbox(page: Page, path: string): Promise { - await page.addScriptTag({ path }); +async function runScriptInSandbox( + page: Page, + impl: { + path?: string; + content?: string; + }, +): Promise { + try { + await page.addScriptTag({ path: impl.path, content: impl.content }); + } catch (e) { + // no-op + } } /** @@ -339,27 +352,4 @@ async function getFirstSentryEnvelopeRequest( return (await getMultipleSentryEnvelopeRequests(page, 1, { url }, requestParser))[0]; } -/** - * Manually inject a script into the page of given URL. - * This function is useful to create more complex test subjects that can't be achieved by pre-built pages. - * The given script should be vanilla browser JavaScript - * - * @param {Page} page - * @param {string} url - * @param {string} scriptPath - * @return {*} {Promise>} - */ -async function injectScriptAndGetEvents(page: Page, url: string, scriptPath: string): Promise> { - await page.goto(url); - await runScriptInSandbox(page, scriptPath); - - return getSentryEvents(page); -} - -export { - runScriptInSandbox, - getMultipleSentryEnvelopeRequests, - getFirstSentryEnvelopeRequest, - getSentryEvents, - injectScriptAndGetEvents, -}; +export { runScriptInSandbox, getMultipleSentryEnvelopeRequests, getFirstSentryEnvelopeRequest, getSentryEvents }; diff --git a/yarn.lock b/yarn.lock index 50ffbc6d803c..236f8b18b110 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5803,12 +5803,12 @@ resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== -"@playwright/test@^1.40.1": - version "1.40.1" - resolved "https://registry.yarnpkg.com/@playwright/test/-/test-1.40.1.tgz#9e66322d97b1d74b9f8718bacab15080f24cde65" - integrity sha512-EaaawMTOeEItCRvfmkI9v6rBkF1svM8wjl/YPRrg2N2Wmp+4qJYkWtJsbew1szfKKDm6fPLy4YAanBhIlf9dWw== +"@playwright/test@^1.43.1": + version "1.43.1" + resolved "https://registry.yarnpkg.com/@playwright/test/-/test-1.43.1.tgz#16728a59eb8ce0f60472f98d8886d6cab0fa3e42" + integrity sha512-HgtQzFgNEEo4TE22K/X7sYTYNqEMMTZmFS8kTq6m8hXj+m1D8TgwgIbumHddJa9h4yl4GkKb8/bgAl2+g7eDgA== dependencies: - playwright "1.40.1" + playwright "1.43.1" "@polka/url@^1.0.0-next.20": version "1.0.0-next.21" @@ -23830,7 +23830,21 @@ playwright-core@1.40.1, playwright-core@^1.29.1: resolved "https://registry.yarnpkg.com/playwright-core/-/playwright-core-1.40.1.tgz#442d15e86866a87d90d07af528e0afabe4c75c05" integrity sha512-+hkOycxPiV534c4HhpfX6yrlawqVUzITRKwHAmYfmsVreltEl6fAZJ3DPfLMOODw0H3s1Itd6MDCWmP1fl/QvQ== -playwright@1.40.1, playwright@^1.31.1: +playwright-core@1.43.1: + version "1.43.1" + resolved "https://registry.yarnpkg.com/playwright-core/-/playwright-core-1.43.1.tgz#0eafef9994c69c02a1a3825a4343e56c99c03b02" + integrity sha512-EI36Mto2Vrx6VF7rm708qSnesVQKbxEWvPrfA1IPY6HgczBplDx7ENtx+K2n4kJ41sLLkuGfmb0ZLSSXlDhqPg== + +playwright@1.43.1: + version "1.43.1" + resolved "https://registry.yarnpkg.com/playwright/-/playwright-1.43.1.tgz#8ad08984ac66c9ef3d0db035be54dd7ec9f1c7d9" + integrity sha512-V7SoH0ai2kNt1Md9E3Gwas5B9m8KR2GVvwZnAI6Pg0m3sh7UvgiYhRrhsziCmqMJNouPckiOhk8T+9bSAK0VIA== + dependencies: + playwright-core "1.43.1" + optionalDependencies: + fsevents "2.3.2" + +playwright@^1.31.1: version "1.40.1" resolved "https://registry.yarnpkg.com/playwright/-/playwright-1.40.1.tgz#a11bf8dca15be5a194851dbbf3df235b9f53d7ae" integrity sha512-2eHI7IioIpQ0bS1Ovg/HszsN/XKNwEG1kbzSDDmADpclKc7CyqkHw7Mg2JCz/bbCxg25QUPcjksoMW7JcIFQmw==