Fix daily e2e tests GitHub Actions cron job (#3923)

# What this PR does

- fixes our e2e tests to work on all tested versions
- updates Grafana versions that we run the daily e2e tests against (bump
`10.0.2` to `10.0.11` + add `10.1.7` tags)
- updates the Slack status message format + change channel from
#irm-amixr-flux to #gops-oncall-dev

<img width="1479" alt="Screenshot 2024-02-24 at 08 30 06"
src="https://github.com/grafana/oncall/assets/9406895/f5cb91f8-12ce-4978-9c37-c72ee8a01e4b">


## NOTE
It looks like we have some e2e tests that fail under the following
circumstances:
- on Firefox or WebKit
- on Grafana 10.2 and 10.3 (once we fix these, we should [update our e2e
tests that run on all PR
builds](https://github.com/grafana/oncall/blob/dev/.github/workflows/linting-and-tests.yml#L325)
to run against `10.3.3` which is the current latest major version
available)

## Checklist

- [x] Unit, integration, and e2e (if applicable) tests updated
- [x] Documentation added (or `pr:no public docs` PR label added if not
required)
- [x] `CHANGELOG.md` updated (or `pr:no changelog` PR label added if not
required)
This commit is contained in:
Joey Orlando 2024-02-27 14:21:53 +00:00 committed by GitHub
parent f8e4360c16
commit 9c0bc26680
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
17 changed files with 245 additions and 228 deletions

View file

@ -386,5 +386,3 @@ name: cloud_access_policy_token
---
kind: signature
hmac: 198b7c7d2c94fc5698b22a722e7748181990207755cf1778b2290137e262518c
...

View file

@ -21,18 +21,21 @@ jobs:
- 9.3.16
- 9.4.13
- 9.5.7
- 10.0.2
# NOTE: don't run on > 10.0.3 until this issue is fixed. It appears that something was changed
# with the plugin-proxy that caused it to start throwing HTTP 502s from time to time
# https://raintank-corp.slack.com/archives/C01C4K8DETW/p1692279329797149
- 10.0.11
- 10.1.7
# TODO: fix issues with running e2e tests against Grafana v10.2.x and v10.3.x
# - 10.2.4
# - latest
fail-fast: false
uses: ./.github/workflows/e2e-tests.yml
with:
grafana-image-tag: ${{ matrix.grafana-image-tag }}
run-expensive-tests: true
browsers: "chromium firefox webkit"
# TODO: fix issues with some tests on firefox and webkit
# example CI build with firefox/webkit failing tests
# https://github.com/grafana/oncall/actions/runs/8022194346/job/21915964672#step:19:905
# browsers: "chromium firefox webkit"
browsers: "chromium"
secrets: inherit
post-status-to-slack:
@ -40,19 +43,22 @@ jobs:
needs: end-to-end-tests
if: always()
steps:
# Useful references
# https://stackoverflow.com/questions/59073850/github-actions-get-url-of-test-build
# https://github.com/orgs/community/discussions/26822#discussioncomment-3305794
#
- uses: slackapi/slack-github-action@v1.24.0
with:
channel-id: irm-amixr-flux
channel-id: gops-oncall-dev
# yamllint disable rule:line-length
payload: |
{
"text": "Daily e2e tests build result: ${{ job.status }}\n${{ github.event.pull_request.html_url || github.event.head_commit.url }}",
"blocks": [
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "Daily e2e tests build result: ${{ job.status }}\n${{ github.event.pull_request.html_url || github.event.head_commit.url }}"
"text": "Daily e2e tests build result: ${{ needs.end-to-end-tests.result == 'success' && ':check:' || ':alert:' }}\n${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}"
}
}
]

View file

@ -37,6 +37,15 @@ jobs:
- name: Checkout
uses: actions/checkout@v3
# TODO: re-enable this when we get the docker build build-context caching working.. see other TODO comment below
# - uses: actions/setup-python@v4
# with:
# python-version: "3.11.4"
# cache: "pip"
# cache-dependency-path: |
# engine/requirements.txt
# engine/requirements-dev.txt
- name: Collect Workflow Telemetry
uses: runforesight/workflow-telemetry-action@v1
with:
@ -90,6 +99,16 @@ jobs:
push: false
tags: oncall/engine:latest
outputs: type=docker,dest=/tmp/oncall-engine.tar
# TODO: figure out how to get this to work.. this will substantially speed up building our docker image here
# because right now most time is spent building wheels for python dependencies
# (even though they rarely change).. this portion "should" work however I haven't yet figured out how to
# get the cache bind mount in engine/Dockerfile to work optionally (ie. when we don't specify
# the --build-context flag to docker build.. otherwise it fails if pip_cache is not available)
#
# references
# https://github.com/moby/buildkit/blob/master/frontend/dockerfile/docs/reference.md#run---mounttypecache
# https://stackoverflow.com/a/71846527
# build-contexts: pip_cache=/home/runner/.cache/pip
- name: Load engine Docker image on the nodes of the cluster
run: kind load image-archive --name=chart-testing /tmp/oncall-engine.tar
@ -119,7 +138,7 @@ jobs:
uses: actions/cache@v3
with:
path: "~/.cache/ms-playwright"
key: ${{ runner.os }}-playwright-${{ env.PLAYWRIGHT_VERSION }}-chromium-firefox-webkit
key: ${{ runner.os }}-playwright-${{ env.PLAYWRIGHT_VERSION }}-${{ inputs.browsers }}
# For the next two steps, use the binary directly from node_modules/.bin as opposed to npx playwright
# due to this bug (https://github.com/microsoft/playwright/issues/13188)
@ -206,6 +225,6 @@ jobs:
- uses: actions/upload-artifact@v3
if: failure()
with:
name: playwright-report
name: playwright-report-${{ inputs.grafana-image-tag }}
path: ./grafana-plugin/playwright-report/
retention-days: 30

View file

@ -319,10 +319,9 @@ jobs:
name: End to end tests
uses: ./.github/workflows/e2e-tests.yml
with:
# NOTE: don't run on > 10.0.3 until this issue is fixed. It appears that something was changed
# with the plugin-proxy that caused it to start throwing HTTP 502s from time to time
# https://raintank-corp.slack.com/archives/C01C4K8DETW/p1692279329797149
grafana-image-tag: 10.0.2
# TODO: fix issues with running e2e tests against Grafana v10.2.x and v10.3.x
grafana-image-tag: 10.1.7
# grafana-image-tag: 10.3.3
run-expensive-tests: false
browsers: "chromium"
secrets: inherit

View file

@ -59,9 +59,6 @@ services:
volumes:
- ./grafana-plugin:/etc/app
- node_modules_dev:/etc/app/node_modules
# https://stackoverflow.com/a/60456034
# see the explaination above that uses the $ENTERPRISE_ENGINE env var
- ${ENTERPRISE_FRONTEND:-/dev/null}:${ENTERPRISE_FRONTEND_VOLUME_MOUNT_DEST_DIR:-/tmp/empty:ro}
profiles:
- oncall_ui

View file

@ -13,10 +13,14 @@ RUN apk add bash \
mariadb-connector-c-dev \
libffi-dev \
git \
postgresql-dev
postgresql-dev
WORKDIR /etc/app
COPY ./requirements.txt ./
# TODO: figure out how to get this to work.. see comment in .github/workflows/e2e-tests.yml
# https://stackoverflow.com/a/71846527
# RUN --mount=type=cache,target=/root/.cache/pip,from=pip_cache pip install -r requirements.txt
RUN pip install -r requirements.txt
# we intentionally have two COPY commands, this is to have the requirements.txt in a separate build step
@ -47,9 +51,15 @@ ENV prometheus_multiproc_dir "/tmp/prometheus_django_metrics"
FROM base AS dev
RUN apk add sqlite mysql-client postgresql-client
# TODO: figure out how to get this to work.. see comment in .github/workflows/e2e-tests.yml
# https://stackoverflow.com/a/71846527
# RUN --mount=type=cache,target=/root/.cache/pip,from=pip_cache pip install -r requirements-dev.txt
RUN pip install -r requirements-dev.txt
FROM dev AS dev-enterprise
# TODO: figure out how to get this to work.. see comment in .github/workflows/e2e-tests.yml
# https://stackoverflow.com/a/71846527
# RUN --mount=type=cache,target=/root/.cache/pip,from=pip_cache pip install -r requirements-enterprise-docker.txt
RUN pip install -r requirements-enterprise-docker.txt
FROM base AS prod

View file

@ -1,4 +1,4 @@
import { test as base, Browser, Page, TestInfo } from '@playwright/test';
import { test as base, Browser, Fixtures, Page, TestInfo } from '@playwright/test';
import { VIEWER_USER_STORAGE_STATE, EDITOR_USER_STORAGE_STATE, ADMIN_USER_STORAGE_STATE } from '../playwright.config';
@ -7,8 +7,6 @@ import { GRAFANA_ADMIN_USERNAME, GRAFANA_EDITOR_USERNAME, GRAFANA_VIEWER_USERNAM
import * as fs from 'fs';
import * as path from 'path';
export class BaseRolePage {
page: Page;
userName: string;
@ -32,11 +30,14 @@ class AdminRolePage extends BaseRolePage {
userName = GRAFANA_ADMIN_USERNAME;
}
type Fixtures = {
interface TestFixtures extends Fixtures {
// currentGrafanaVersion: string;
viewerRolePage: ViewerRolePage;
editorRolePage: EditorRolePage;
adminRolePage: AdminRolePage;
};
}
interface WorkerFixtures extends Fixtures {}
/**
* NOTE: currently videos are not generated automatically because of how we generate a browserContext within our
@ -77,11 +78,16 @@ const _recordTestVideo = async (
};
export * from '@playwright/test';
export const test = base.extend<Fixtures>({
export const test = base.extend<TestFixtures, WorkerFixtures>({
viewerRolePage: ({ browser }, use, testInfo) =>
_recordTestVideo(browser, use, testInfo, VIEWER_USER_STORAGE_STATE, ViewerRolePage),
editorRolePage: async ({ browser }, use, testInfo) =>
_recordTestVideo(browser, use, testInfo, EDITOR_USER_STORAGE_STATE, EditorRolePage),
adminRolePage: async ({ browser }, use, testInfo) =>
_recordTestVideo(browser, use, testInfo, ADMIN_USER_STORAGE_STATE, AdminRolePage),
/**
* add back this fixture once this bug is fixed
* https://github.com/microsoft/playwright/issues/29608
*/
// currentGrafanaVersion: ({}, use) => use('9.0.0'),
});

View file

@ -12,7 +12,7 @@ import { getOnCallApiUrl } from 'utils/consts';
import { VIEWER_USER_STORAGE_STATE, EDITOR_USER_STORAGE_STATE, ADMIN_USER_STORAGE_STATE } from '../playwright.config';
import GrafanaAPIClient from './utils/clients/grafana';
import grafanaApiClient from './utils/clients/grafana';
import {
GRAFANA_ADMIN_PASSWORD,
GRAFANA_ADMIN_USERNAME,
@ -26,8 +26,6 @@ import {
import { clickButton, getInputByName } from './utils/forms';
import { goToGrafanaPage } from './utils/navigation';
const grafanaApiClient = new GrafanaAPIClient(GRAFANA_ADMIN_USERNAME, GRAFANA_ADMIN_PASSWORD);
enum OrgRole {
None = 'None',
Viewer = 'Viewer',
@ -154,5 +152,18 @@ setup('Configure Grafana OnCall plugin', async ({ request }, { config }) => {
await configureOnCallPlugin(adminPage);
}
/**
* determine the current Grafana version of the stack in question and set it such that it can be used in the tests
* to conditionally skip certain tests.
*
* According to the Playwright docs, the best way to set config like this on the fly, is to set values
* on process.env https://playwright.dev/docs/test-global-setup-teardown#example
*
* TODO: when this bug is fixed in playwright https://github.com/microsoft/playwright/issues/29608
* move this to the currentGrafanaVersion fixture
*/
const currentGrafanaVersion = await grafanaApiClient.getGrafanaVersion(adminAuthedRequest);
process.env.CURRENT_GRAFANA_VERSION = currentGrafanaVersion;
await adminBrowserContext.close();
});

View file

@ -1,3 +1,4 @@
import semver from 'semver';
import { test, expect } from '../fixtures';
import { resolveFiringAlert } from '../utils/alertGroup';
import { createEscalationChain, EscalationStep } from '../utils/escalationChain';
@ -6,6 +7,18 @@ import { createIntegrationAndSendDemoAlert } from '../utils/integrations';
import { goToGrafanaPage, goToOnCallPage } from '../utils/navigation';
import { createOnCallSchedule } from '../utils/schedule';
/**
* Insights is dependent on Scenes which were only added in Grafana 10.0.0
* https://grafana.com/docs/grafana/latest/whatsnew/whats-new-in-v10-0/#scenes
* TODO: remove the process.env.CURRENT_GRAFANA_VERSION portion
* and use the currentGrafanaVersion fixture once this bugged is patched in playwright
* https://github.com/microsoft/playwright/issues/29608
*/
test.skip(
() => semver.lt(process.env.CURRENT_GRAFANA_VERSION, '10.0.0'),
'Insights is only available in Grafana 10.0.0 and above'
);
test.describe('Insights', () => {
test.beforeAll(async ({ adminRolePage: { page, userName } }) => {
const DATASOURCE_NAME = 'OnCall Prometheus';

View file

@ -7,8 +7,7 @@ const HEARTBEAT_SETTINGS_FORM_TEST_ID = 'heartbeat-settings-form';
test.describe("updating an integration's heartbeat interval works", async () => {
const _openHeartbeatSettingsForm = async (page: Page) => {
await page.getByTestId('integration-settings-context-menu-wrapper').getByRole('img').click();
await page.waitForTimeout(1000);
await page.getByTestId('integration-settings-context-menu-wrapper').click();
await page.getByTestId('integration-heartbeat-settings').click();
};

View file

@ -81,11 +81,7 @@ test.describe('maintenance mode works', () => {
await page.getByText('Stop Maintenance').click();
// in the modal popup, confirm that we want to stop it
await clickButton({
page,
buttonText: 'Stop',
startingLocator: page.getByRole('dialog'),
});
await page.locator('button >> text=Stop').click();
await getRemainingTimeTooltip(page).waitFor({ state: 'hidden' });
};

View file

@ -1,7 +1,7 @@
import { OrgRole } from '@grafana/data';
import { expect, APIRequestContext } from '@playwright/test';
import { BASE_URL } from '../constants';
import { BASE_URL, GRAFANA_ADMIN_PASSWORD, GRAFANA_ADMIN_USERNAME } from '../constants';
type UsersLookupResponse = {
id: number;
@ -11,6 +11,12 @@ type CreateUserResponse = {
id: number;
};
type GetSettingsResponse = {
buildInfo: {
version: string;
};
};
class GrafanaApiException extends Error {
constructor(message: string) {
super(message);
@ -18,7 +24,7 @@ class GrafanaApiException extends Error {
}
}
export default class GrafanaAPIClient {
class GrafanaAPIClient {
userName: string;
password: string;
@ -113,4 +119,16 @@ export default class GrafanaAPIClient {
});
expect(res.ok()).toBeTruthy();
};
// https://grafana.com/docs/grafana/latest/developers/http_api/other/#get-settings
getGrafanaVersion = async (request: APIRequestContext): Promise<string> => {
const res = await request.get(`${BASE_URL}/api/frontend/settings`);
expect(res.ok()).toBeTruthy();
const data: GetSettingsResponse = await res.json();
return data.buildInfo.version;
};
}
const grafanaAPIClient = new GrafanaAPIClient(GRAFANA_ADMIN_USERNAME, GRAFANA_ADMIN_PASSWORD);
export default grafanaAPIClient;

View file

@ -1,5 +1,17 @@
import { Page } from '@playwright/test';
// close the currently opened modal
/**
* in Grafana v9 the aria-label is "Close dialog"
* in Grafana v10.0 the aria-label is "Close dialogue"
* in Grafana v10.1 the aria-label is "Close"
* 🙄
*
* https://playwright.dev/docs/other-locators#css-elements-matching-one-of-the-conditions
*/
const POSSIBLE_CLOSE_MODAL_BUTTON_DIALOGUE_ARIA_LABELS = ['Close dialog', 'Close dialogue', 'Close'];
const CLOSE_MODAL_BUTTON_ARIA_LABEL_SELECTOR = POSSIBLE_CLOSE_MODAL_BUTTON_DIALOGUE_ARIA_LABELS.map(
(ariaLabel) => `button[aria-label="${ariaLabel}"]`
).join(', ');
export const closeModal = async (page: Page): Promise<void> =>
(await page.waitForSelector('button[aria-label="Close dialogue"]')).click();
(await page.waitForSelector(CLOSE_MODAL_BUTTON_ARIA_LABEL_SELECTOR))?.click();

View file

@ -10,7 +10,6 @@ type NotifyBy = 'SMS' | 'Phone call';
const openUserSettingsModal = async (page: Page): Promise<void> => {
await goToOnCallPage(page, 'users');
await clickButton({ page, buttonText: 'View my profile' });
await page.locator('text=To edit user details such as Username, email, and role').waitFor({ state: 'visible' });
};
const getForgetPhoneNumberButton = (page: Page): Locator => page.locator('button >> text=Forget Phone Number');
@ -55,11 +54,9 @@ export const verifyUserPhoneNumber = async (page: Page): Promise<void> => {
* and then gets the notification type dropdown
*/
const getFirstDefaultNotificationSettingTypeDropdown = async (page: Page): Promise<Locator> => {
const defaultNotificationSettingsList = page.locator('ul[class*="Timeline-module"] >> nth=0');
await defaultNotificationSettingsList.waitFor({ state: 'visible' });
const firstDefaultNotificationSettingRow = defaultNotificationSettingsList.locator('li >> nth=0');
await firstDefaultNotificationSettingRow.waitFor({ state: 'visible' });
const firstDefaultNotificationSettingRow = page
.getByTestId('default-personal-notification-settings')
.locator('li >> nth=0');
// get the notification type dropdown specifically
return firstDefaultNotificationSettingRow.locator('div[class*="input-wrapper"] >> nth=1');
@ -69,18 +66,6 @@ export const configureUserNotificationSettings = async (page: Page, notifyBy: No
// open the user settings modal
await openUserSettingsModal(page);
/**
* see if we already have a default notification setting
* if we don't click the Add Notification Step button and add one
* otherwise update the existing one
*/
const defaultNotificationsAddNotificationStepButton = page.locator(
'div[class*="PersonalNotificationSettings"] >> nth=0 text=Add Notification Step'
);
if (await defaultNotificationsAddNotificationStepButton.isVisible()) {
await defaultNotificationsAddNotificationStepButton.click();
}
// select our notification type
const firstDefaultNotificationTypeDropdopdown = await getFirstDefaultNotificationSettingTypeDropdown(page);
await selectDropdownValue({

View file

@ -49,7 +49,7 @@
"@grafana/eslint-config": "^6.0.0",
"@grafana/tsconfig": "^1.2.0-rc1",
"@jest/globals": "^27.5.1",
"@playwright/test": "^1.39.0",
"@playwright/test": "^1.41.0",
"@swc/core": "^1.3.90",
"@swc/helpers": "^0.5.0",
"@swc/jest": "^0.2.26",
@ -102,6 +102,7 @@
"replace-in-file-webpack-plugin": "^1.0.6",
"sass": "1.63.2",
"sass-loader": "13.3.1",
"semver": "^7.6.0",
"style-loader": "3.3.3",
"stylelint-config-prettier": "^9.0.3",
"stylelint-prettier": "^2.0.0",

View file

@ -17,8 +17,12 @@ export const NotificationSettingsTab = (props: { id: User['pk'] }) => {
return (
<div>
<PersonalNotificationSettings userPk={id} isImportant={false} />
<PersonalNotificationSettings userPk={id} isImportant={true} />
<div data-testid="default-personal-notification-settings">
<PersonalNotificationSettings userPk={id} isImportant={false} />
</div>
<div data-testid="important-personal-notification-settings">
<PersonalNotificationSettings userPk={id} isImportant={true} />
</div>
</div>
);
};

View file

@ -1650,13 +1650,6 @@
"@types/node" "*"
jest-mock "^29.7.0"
"@jest/expect-utils@^29.3.1":
version "29.3.1"
resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.3.1.tgz#531f737039e9b9e27c42449798acb5bba01935b6"
integrity sha512-wlrznINZI5sMjwvUoLVk617ll/UYfGIZNxmbU+Pa7wmkL4vYzhV9R2pwVqUh4NWWuLQWkI8+8mOkxs//prKQ3g==
dependencies:
jest-get-type "^29.2.0"
"@jest/expect-utils@^29.7.0":
version "29.7.0"
resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.7.0.tgz#023efe5d26a8a70f21677d0a1afc0f0a44e3a1c6"
@ -2236,12 +2229,12 @@
resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33"
integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==
"@playwright/test@^1.39.0":
version "1.39.0"
resolved "https://registry.yarnpkg.com/@playwright/test/-/test-1.39.0.tgz#d10ba8e38e44104499e25001945f07faa9fa91cd"
integrity sha512-3u1iFqgzl7zr004bGPYiN/5EZpRUSFddQBra8Rqll5N0/vfpqlP9I9EXqAoGacuAbX6c9Ulg/Cjqglp5VkK6UQ==
"@playwright/test@^1.41.0":
version "1.41.2"
resolved "https://registry.yarnpkg.com/@playwright/test/-/test-1.41.2.tgz#bd9db40177f8fd442e16e14e0389d23751cdfc54"
integrity sha512-qQB9h7KbibJzrDpkXkYvsmiDJK14FULCCZgEcoe2AvFAS64oCirWTwzTlAYEbKaRxWs5TFesE1Na6izMv3HfGg==
dependencies:
playwright "1.39.0"
playwright "1.41.2"
"@polka/url@^1.0.0-next.20":
version "1.0.0-next.21"
@ -2662,79 +2655,79 @@
remark "^13.0.0"
unist-util-find-all-after "^3.0.2"
"@swc/core-darwin-arm64@1.3.107":
version "1.3.107"
resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.107.tgz#abac4c19816751de1dcbaab456710ca55e580782"
integrity sha512-47tD/5vSXWxPd0j/ZllyQUg4bqalbQTsmqSw0J4dDdS82MWqCAwUErUrAZPRjBkjNQ6Kmrf5rpCWaGTtPw+ngw==
"@swc/core-darwin-arm64@1.4.2":
version "1.4.2"
resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.4.2.tgz#3b5677c5b9c5a7a91d953b96cd603c94064e2835"
integrity sha512-1uSdAn1MRK5C1m/TvLZ2RDvr0zLvochgrZ2xL+lRzugLlCTlSA+Q4TWtrZaOz+vnnFVliCpw7c7qu0JouhgQIw==
"@swc/core-darwin-x64@1.3.107":
version "1.3.107"
resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.3.107.tgz#4c0df233ebf293429cd2f10224d6a870a5cc019e"
integrity sha512-hwiLJ2ulNkBGAh1m1eTfeY1417OAYbRGcb/iGsJ+LuVLvKAhU/itzsl535CvcwAlt2LayeCFfcI8gdeOLeZa9A==
"@swc/core-darwin-x64@1.4.2":
version "1.4.2"
resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.4.2.tgz#bbc8bbf420389b12541151255a50f319cc17ef96"
integrity sha512-TYD28+dCQKeuxxcy7gLJUCFLqrwDZnHtC2z7cdeGfZpbI2mbfppfTf2wUPzqZk3gEC96zHd4Yr37V3Tvzar+lQ==
"@swc/core-linux-arm-gnueabihf@1.3.107":
version "1.3.107"
resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.107.tgz#81004cca4c7554007ea5ac51e276147e958e3e9f"
integrity sha512-I2wzcC0KXqh0OwymCmYwNRgZ9nxX7DWnOOStJXV3pS0uB83TXAkmqd7wvMBuIl9qu4Hfomi9aDM7IlEEn9tumQ==
"@swc/core-linux-arm-gnueabihf@1.4.2":
version "1.4.2"
resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.4.2.tgz#aa9a18f130820717df08c9dd882043fc47e8d35a"
integrity sha512-Eyqipf7ZPGj0vplKHo8JUOoU1un2sg5PjJMpEesX0k+6HKE2T8pdyeyXODN0YTFqzndSa/J43EEPXm+rHAsLFQ==
"@swc/core-linux-arm64-gnu@1.3.107":
version "1.3.107"
resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.107.tgz#c01d75df662067fb7805bfdfa66c2f17f2b3185f"
integrity sha512-HWgnn7JORYlOYnGsdunpSF8A+BCZKPLzLtEUA27/M/ZuANcMZabKL9Zurt7XQXq888uJFAt98Gy+59PU90aHKg==
"@swc/core-linux-arm64-gnu@1.4.2":
version "1.4.2"
resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.4.2.tgz#5ef1de0ca7cc3a034aa3a1c3c1794b78e6ca207e"
integrity sha512-wZn02DH8VYPv3FC0ub4my52Rttsus/rFw+UUfzdb3tHMHXB66LqN+rR0ssIOZrH6K+VLN6qpTw9VizjyoH0BxA==
"@swc/core-linux-arm64-musl@1.3.107":
version "1.3.107"
resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.107.tgz#5e0c4fe3fcc49a7bb77ffafa680622e53c982e0a"
integrity sha512-vfPF74cWfAm8hyhS8yvYI94ucMHIo8xIYU+oFOW9uvDlGQRgnUf/6DEVbLyt/3yfX5723Ln57U8uiMALbX5Pyw==
"@swc/core-linux-arm64-musl@1.4.2":
version "1.4.2"
resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.4.2.tgz#5dfd2a8c0483770a307de0ccb6019a082ff0d902"
integrity sha512-3G0D5z9hUj9bXNcwmA1eGiFTwe5rWkuL3DsoviTj73TKLpk7u64ND0XjEfO0huVv4vVu9H1jodrKb7nvln/dlw==
"@swc/core-linux-x64-gnu@1.3.107":
version "1.3.107"
resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.107.tgz#afb4a656a1717170b2c8b76c9b2349b5077630b4"
integrity sha512-uBVNhIg0ip8rH9OnOsCARUFZ3Mq3tbPHxtmWk9uAa5u8jQwGWeBx5+nTHpDOVd3YxKb6+5xDEI/edeeLpha/9g==
"@swc/core-linux-x64-gnu@1.4.2":
version "1.4.2"
resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.4.2.tgz#314aa76b7c1208e315e3156ab57b7188fb605bc2"
integrity sha512-LFxn9U8cjmYHw3jrdPNqPAkBGglKE3tCZ8rA7hYyp0BFxuo7L2ZcEnPm4RFpmSCCsExFH+LEJWuMGgWERoktvg==
"@swc/core-linux-x64-musl@1.3.107":
version "1.3.107"
resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.107.tgz#3f9bce2fe13691be39fddc39bba8558fe6308823"
integrity sha512-mvACkUvzSIB12q1H5JtabWATbk3AG+pQgXEN95AmEX2ZA5gbP9+B+mijsg7Sd/3tboHr7ZHLz/q3SHTvdFJrEw==
"@swc/core-linux-x64-musl@1.4.2":
version "1.4.2"
resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.4.2.tgz#b2b226657f6a8d48f561cb3dbe2d414cfbafe467"
integrity sha512-dp0fAmreeVVYTUcb4u9njTPrYzKnbIH0EhH2qvC9GOYNNREUu2GezSIDgonjOXkHiTCvopG4xU7y56XtXj4VrQ==
"@swc/core-win32-arm64-msvc@1.3.107":
version "1.3.107"
resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.107.tgz#5b485e9ce2de6f27ce2fbc1ba8c0b4e98009318d"
integrity sha512-J3P14Ngy/1qtapzbguEH41kY109t6DFxfbK4Ntz9dOWNuVY3o9/RTB841ctnJk0ZHEG+BjfCJjsD2n8H5HcaOA==
"@swc/core-win32-arm64-msvc@1.4.2":
version "1.4.2"
resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.4.2.tgz#582f79fa328ce0f426ab8313b3d881e7315fab2f"
integrity sha512-HlVIiLMQkzthAdqMslQhDkoXJ5+AOLUSTV6fm6shFKZKqc/9cJvr4S8UveNERL9zUficA36yM3bbfo36McwnvQ==
"@swc/core-win32-ia32-msvc@1.3.107":
version "1.3.107"
resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.107.tgz#1bbe3ce6784b3e4203bf89443c33411c27389b56"
integrity sha512-ZBUtgyjTHlz8TPJh7kfwwwFma+ktr6OccB1oXC8fMSopD0AxVnQasgun3l3099wIsAB9eEsJDQ/3lDkOLs1gBA==
"@swc/core-win32-ia32-msvc@1.4.2":
version "1.4.2"
resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.4.2.tgz#15c8289e1c18857f79b9b888100ab1f871bf58f6"
integrity sha512-WCF8faPGjCl4oIgugkp+kL9nl3nUATlzKXCEGFowMEmVVCFM0GsqlmGdPp1pjZoWc9tpYanoXQDnp5IvlDSLhA==
"@swc/core-win32-x64-msvc@1.3.107":
version "1.3.107"
resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.107.tgz#c89640b16504ddda1f1faf573a7ed7193dc87485"
integrity sha512-Eyzo2XRqWOxqhE1gk9h7LWmUf4Bp4Xn2Ttb0ayAXFp6YSTxQIThXcT9kipXZqcpxcmDwoq8iWbbf2P8XL743EA==
"@swc/core-win32-x64-msvc@1.4.2":
version "1.4.2"
resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.4.2.tgz#c999ca7b68124d058b40a1431cdd6f56779670d5"
integrity sha512-oV71rwiSpA5xre2C5570BhCsg1HF97SNLsZ/12xv7zayGzqr3yvFALFJN8tHKpqUdCB4FGPjoP3JFdV3i+1wUw==
"@swc/core@^1.3.90":
version "1.3.107"
resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.3.107.tgz#081697224ec3bffa63c33209d242e4f0b2c49e78"
integrity sha512-zKhqDyFcTsyLIYK1iEmavljZnf4CCor5pF52UzLAz4B6Nu/4GLU+2LQVAf+oRHjusG39PTPjd2AlRT3f3QWfsQ==
version "1.4.2"
resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.4.2.tgz#310b0d5e93e47ca72f54150c8f9efcb434c39b17"
integrity sha512-vWgY07R/eqj1/a0vsRKLI9o9klGZfpLNOVEnrv4nrccxBgYPjcf22IWwAoaBJ+wpA7Q4fVjCUM8lP0m01dpxcg==
dependencies:
"@swc/counter" "^0.1.1"
"@swc/counter" "^0.1.2"
"@swc/types" "^0.1.5"
optionalDependencies:
"@swc/core-darwin-arm64" "1.3.107"
"@swc/core-darwin-x64" "1.3.107"
"@swc/core-linux-arm-gnueabihf" "1.3.107"
"@swc/core-linux-arm64-gnu" "1.3.107"
"@swc/core-linux-arm64-musl" "1.3.107"
"@swc/core-linux-x64-gnu" "1.3.107"
"@swc/core-linux-x64-musl" "1.3.107"
"@swc/core-win32-arm64-msvc" "1.3.107"
"@swc/core-win32-ia32-msvc" "1.3.107"
"@swc/core-win32-x64-msvc" "1.3.107"
"@swc/core-darwin-arm64" "1.4.2"
"@swc/core-darwin-x64" "1.4.2"
"@swc/core-linux-arm-gnueabihf" "1.4.2"
"@swc/core-linux-arm64-gnu" "1.4.2"
"@swc/core-linux-arm64-musl" "1.4.2"
"@swc/core-linux-x64-gnu" "1.4.2"
"@swc/core-linux-x64-musl" "1.4.2"
"@swc/core-win32-arm64-msvc" "1.4.2"
"@swc/core-win32-ia32-msvc" "1.4.2"
"@swc/core-win32-x64-msvc" "1.4.2"
"@swc/counter@^0.1.1":
version "0.1.2"
resolved "https://registry.yarnpkg.com/@swc/counter/-/counter-0.1.2.tgz#bf06d0770e47c6f1102270b744e17b934586985e"
integrity sha512-9F4ys4C74eSTEUNndnER3VJ15oru2NumfQxS8geE+f3eB5xvfxpWyqE5XlVnxb/R14uoXi6SLbBwwiDSkv+XEw==
"@swc/counter@^0.1.2", "@swc/counter@^0.1.3":
version "0.1.3"
resolved "https://registry.yarnpkg.com/@swc/counter/-/counter-0.1.3.tgz#cc7463bd02949611c6329596fccd2b0ec782b0e9"
integrity sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==
"@swc/helpers@^0.5.0":
version "0.5.2"
@ -2744,11 +2737,12 @@
tslib "^2.4.0"
"@swc/jest@^0.2.26":
version "0.2.34"
resolved "https://registry.yarnpkg.com/@swc/jest/-/jest-0.2.34.tgz#1d459171887b11855ec01d73c647f2e9ecaffd7b"
integrity sha512-MrS4m3yHFfnkYjxr3eqxshWi6fVhPViHQsb6XfiTO81niwEqYXeR58YhGJee6R0bfQHC69cv5OJ9+dYTYaYKRg==
version "0.2.36"
resolved "https://registry.yarnpkg.com/@swc/jest/-/jest-0.2.36.tgz#2797450a30d28b471997a17e901ccad946fe693e"
integrity sha512-8X80dp81ugxs4a11z1ka43FPhP+/e+mJNXJSxiNYk8gIX/jPBtY4gQTrKu/KIoco8bzKuPI5lUxjfLiGsfvnlw==
dependencies:
"@jest/create-cache-key-function" "^29.7.0"
"@swc/counter" "^0.1.3"
jsonc-parser "^3.2.0"
"@swc/types@^0.1.5":
@ -3000,15 +2994,7 @@
dependencies:
"@types/istanbul-lib-report" "*"
"@types/jest@*":
version "29.2.2"
resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.2.2.tgz#874e7dc6702fa6a3fe6107792aa98636dcc480b4"
integrity sha512-og1wAmdxKoS71K2ZwSVqWPX6OVn3ihZ6ZT2qvZvZQm90lJVDyXIjYcu4Khx2CNIeaFv12rOU/YObOsI3VOkzog==
dependencies:
expect "^29.0.0"
pretty-format "^29.0.0"
"@types/jest@^29.5.0":
"@types/jest@*", "@types/jest@^29.5.0":
version "29.5.12"
resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.5.12.tgz#7f7dc6eb4cf246d2474ed78744b05d06ce025544"
integrity sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw==
@ -3142,9 +3128,9 @@
"@types/react" "*"
"@types/react-dom@^18.0.0":
version "18.2.18"
resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.2.18.tgz#16946e6cd43971256d874bc3d0a72074bb8571dd"
integrity sha512-TJxDm6OfAX2KJWJdMEVTwWke5Sc/E/RlnPGvGfS0W7+6ocy2xhDVQVh/KvC2Uf7kACs+gDytdusDSdWfWkaNzw==
version "18.2.19"
resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.2.19.tgz#b84b7c30c635a6c26c6a6dfbb599b2da9788be58"
integrity sha512-aZvQL6uUbIJpjZk4U8JZGbau9KDeAwMfmhyWorxgBkqDIEf6ROjRozcmPIicqsUwPUjbkDfHKgGee1Lq65APcA==
dependencies:
"@types/react" "*"
@ -4508,7 +4494,22 @@ chardet@^0.7.0:
resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e"
integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==
"chokidar@>=3.0.0 <4.0.0", chokidar@^3.5.3:
"chokidar@>=3.0.0 <4.0.0":
version "3.6.0"
resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b"
integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==
dependencies:
anymatch "~3.1.2"
braces "~3.0.2"
glob-parent "~5.1.2"
is-binary-path "~2.1.0"
is-glob "~4.0.1"
normalize-path "~3.0.0"
readdirp "~3.6.0"
optionalDependencies:
fsevents "~2.3.2"
chokidar@^3.5.3:
version "3.5.3"
resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd"
integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==
@ -5421,11 +5422,6 @@ diff-sequences@^27.5.1:
resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-27.5.1.tgz#eaecc0d327fd68c8d9672a1e64ab8dccb2ef5327"
integrity sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==
diff-sequences@^29.3.1:
version "29.3.1"
resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.3.1.tgz#104b5b95fe725932421a9c6e5b4bef84c3f2249e"
integrity sha512-hlM3QR272NXCi4pq+N4Kok4kOp6EsgOM3ZSpJI7Da3UAs+Ttsi8MRmB6trM/lhyzUxGfOgnpkHtgqm5Q/CTcfQ==
diff-sequences@^29.6.3:
version "29.6.3"
resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.6.3.tgz#4deaf894d11407c51efc8418012f9e70b84ea921"
@ -6271,18 +6267,7 @@ expect@^27.5.1:
jest-matcher-utils "^27.5.1"
jest-message-util "^27.5.1"
expect@^29.0.0:
version "29.3.1"
resolved "https://registry.yarnpkg.com/expect/-/expect-29.3.1.tgz#92877aad3f7deefc2e3f6430dd195b92295554a6"
integrity sha512-gGb1yTgU30Q0O/tQq+z30KBWv24ApkMgFUpvKBkyLUBL68Wv8dHdJxTBZFl/iT8K/bqDHvUYRH6IIN3rToopPA==
dependencies:
"@jest/expect-utils" "^29.3.1"
jest-get-type "^29.2.0"
jest-matcher-utils "^29.3.1"
jest-message-util "^29.3.1"
jest-util "^29.3.1"
expect@^29.7.0:
expect@^29.0.0, expect@^29.7.0:
version "29.7.0"
resolved "https://registry.yarnpkg.com/expect/-/expect-29.7.0.tgz#578874590dcb3214514084c08115d8aee61e11bc"
integrity sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==
@ -7266,9 +7251,9 @@ immutable@4.3.1:
integrity sha512-lj9cnmB/kVS0QHsJnYKD1uo3o39nrbKxszjnqS9Fr6NB7bZzW45U6WSGBPKXDL/CvDKqDNPA4r3DoDQ8GTxo2A==
immutable@^4.0.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.1.0.tgz#f795787f0db780183307b9eb2091fcac1f6fafef"
integrity sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==
version "4.3.5"
resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.3.5.tgz#f8b436e66d59f99760dc577f5c99a4fd2a5cc5a0"
integrity sha512-8eabxkth9gZatlwl5TBuJnCsoTADlL6ftEr7A4qgdaTsPyreilDSnUk57SO+jfKcNtxPa22U5KK6DSeAYhpBJw==
import-fresh@^3.0.0, import-fresh@^3.2.1:
version "3.3.0"
@ -8015,16 +8000,6 @@ jest-diff@^27.5.1:
jest-get-type "^27.5.1"
pretty-format "^27.5.1"
jest-diff@^29.3.1:
version "29.3.1"
resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.3.1.tgz#d8215b72fed8f1e647aed2cae6c752a89e757527"
integrity sha512-vU8vyiO7568tmin2lA3r2DP8oRvzhvRcD4DjpXc6uGveQodyk7CKLhQlCSiwgx3g0pFaE88/KLZ0yaTWMc4Uiw==
dependencies:
chalk "^4.0.0"
diff-sequences "^29.3.1"
jest-get-type "^29.2.0"
pretty-format "^29.3.1"
jest-diff@^29.7.0:
version "29.7.0"
resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.7.0.tgz#017934a66ebb7ecf6f205e84699be10afd70458a"
@ -8084,11 +8059,6 @@ jest-get-type@^27.5.1:
resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-27.5.1.tgz#3cd613c507b0f7ace013df407a1c1cd578bcb4f1"
integrity sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==
jest-get-type@^29.2.0:
version "29.2.0"
resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.2.0.tgz#726646f927ef61d583a3b3adb1ab13f3a5036408"
integrity sha512-uXNJlg8hKFEnDgFsrCjznB+sTxdkuqiCL6zMgA75qEbAJjJYTs9XPrvDctrEig2GDow22T/LvHgO57iJhXB/UA==
jest-get-type@^29.6.3:
version "29.6.3"
resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.6.3.tgz#36f499fdcea197c1045a127319c0481723908fd1"
@ -8131,16 +8101,6 @@ jest-matcher-utils@^27.5.1:
jest-get-type "^27.5.1"
pretty-format "^27.5.1"
jest-matcher-utils@^29.3.1:
version "29.3.1"
resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.3.1.tgz#6e7f53512f80e817dfa148672bd2d5d04914a572"
integrity sha512-fkRMZUAScup3txIKfMe3AIZZmPEjWEdsPJFK3AIy5qRohWqQFg1qrmKfYXR9qEkNc7OdAu2N4KPHibEmy4HPeQ==
dependencies:
chalk "^4.0.0"
jest-diff "^29.3.1"
jest-get-type "^29.2.0"
pretty-format "^29.3.1"
jest-matcher-utils@^29.7.0:
version "29.7.0"
resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz#ae8fec79ff249fd592ce80e3ee474e83a6c44f12"
@ -8166,21 +8126,6 @@ jest-message-util@^27.5.1:
slash "^3.0.0"
stack-utils "^2.0.3"
jest-message-util@^29.3.1:
version "29.3.1"
resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.3.1.tgz#37bc5c468dfe5120712053dd03faf0f053bd6adb"
integrity sha512-lMJTbgNcDm5z+6KDxWtqOFWlGQxD6XaYwBqHR8kmpkP+WWWG90I35kdtQHY67Ay5CSuydkTBbJG+tH9JShFCyA==
dependencies:
"@babel/code-frame" "^7.12.13"
"@jest/types" "^29.3.1"
"@types/stack-utils" "^2.0.0"
chalk "^4.0.0"
graceful-fs "^4.2.9"
micromatch "^4.0.4"
pretty-format "^29.3.1"
slash "^3.0.0"
stack-utils "^2.0.3"
jest-message-util@^29.7.0:
version "29.7.0"
resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.7.0.tgz#8bc392e204e95dfe7564abbe72a404e28e51f7f3"
@ -8339,7 +8284,7 @@ jest-util@^27.5.1:
graceful-fs "^4.2.9"
picomatch "^2.2.3"
jest-util@^29.0.0, jest-util@^29.3.1:
jest-util@^29.0.0:
version "29.3.1"
resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.3.1.tgz#1dda51e378bbcb7e3bc9d8ab651445591ed373e1"
integrity sha512-7YOVZaiX7RJLv76ZfHt4nbNEzzTRiMW/IiOG7ZOKmTXmoGBxUDefgMAxQubu6WPVqP5zSzAdZG0FfLcC7HOIFQ==
@ -9970,17 +9915,17 @@ pkg-dir@^7.0.0:
dependencies:
find-up "^6.3.0"
playwright-core@1.39.0:
version "1.39.0"
resolved "https://registry.yarnpkg.com/playwright-core/-/playwright-core-1.39.0.tgz#efeaea754af4fb170d11845b8da30b2323287c63"
integrity sha512-+k4pdZgs1qiM+OUkSjx96YiKsXsmb59evFoqv8SKO067qBA+Z2s/dCzJij/ZhdQcs2zlTAgRKfeiiLm8PQ2qvw==
playwright-core@1.41.2:
version "1.41.2"
resolved "https://registry.yarnpkg.com/playwright-core/-/playwright-core-1.41.2.tgz#db22372c708926c697acc261f0ef8406606802d9"
integrity sha512-VaTvwCA4Y8kxEe+kfm2+uUUw5Lubf38RxF7FpBxLPmGe5sdNkSg5e3ChEigaGrX7qdqT3pt2m/98LiyvU2x6CA==
playwright@1.39.0:
version "1.39.0"
resolved "https://registry.yarnpkg.com/playwright/-/playwright-1.39.0.tgz#184c81cd6478f8da28bcd9e60e94fcebf566e077"
integrity sha512-naE5QT11uC/Oiq0BwZ50gDmy8c8WLPRTEWuSSFVG2egBka/1qMoSqYQcROMT9zLwJ86oPofcTH2jBY/5wWOgIw==
playwright@1.41.2:
version "1.41.2"
resolved "https://registry.yarnpkg.com/playwright/-/playwright-1.41.2.tgz#4e760b1c79f33d9129a8c65cc27953be6dd35042"
integrity sha512-v0bOa6H2GJChDL8pAeLa/LZC4feoAMbSQm1/jF/ySsWWoaNItvrMP7GEkvEEFyCTUYKMxjQKaTSg5up7nR6/8A==
dependencies:
playwright-core "1.39.0"
playwright-core "1.41.2"
optionalDependencies:
fsevents "2.3.2"
@ -10186,16 +10131,7 @@ pretty-format@^27.0.2, pretty-format@^27.5.1:
ansi-styles "^5.0.0"
react-is "^17.0.1"
pretty-format@^29.0.0, pretty-format@^29.3.1:
version "29.3.1"
resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.3.1.tgz#1841cac822b02b4da8971dacb03e8a871b4722da"
integrity sha512-FyLnmb1cYJV8biEIiRyzRFvs2lry7PPIvOqKVe1GCUEYg4YGmlx1qG9EJNMxArYm7piII4qb8UV1Pncq5dxmcg==
dependencies:
"@jest/schemas" "^29.0.0"
ansi-styles "^5.0.0"
react-is "^18.0.0"
pretty-format@^29.7.0:
pretty-format@^29.0.0, pretty-format@^29.7.0:
version "29.7.0"
resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.7.0.tgz#ca42c758310f365bfa71a0bda0a807160b776812"
integrity sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==
@ -11559,6 +11495,13 @@ semver@^6.0.0, semver@^6.3.0, semver@^6.3.1:
resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4"
integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==
semver@^7.6.0:
version "7.6.0"
resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.0.tgz#1a46a4db4bffcccd97b743b5005c8325f23d4e2d"
integrity sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==
dependencies:
lru-cache "^6.0.0"
sentence-case@^2.1.0:
version "2.1.1"
resolved "https://registry.yarnpkg.com/sentence-case/-/sentence-case-2.1.1.tgz#1f6e2dda39c168bf92d13f86d4a918933f667ed4"