Rebased and refixed
This commit is contained in:
@ -297,13 +297,12 @@ test(
|
|||||||
|
|
||||||
const pointOnModel = { x: 630, y: 280 }
|
const pointOnModel = { x: 630, y: 280 }
|
||||||
|
|
||||||
|
|
||||||
await test.step('Opening the bracket project should load the stream', async () => {
|
await test.step('Opening the bracket project should load the stream', async () => {
|
||||||
// expect to see the text bracket
|
// expect to see the text bracket
|
||||||
await expect(page.getByText('bracket')).toBeVisible()
|
await expect(page.getByText('bracket')).toBeVisible()
|
||||||
|
|
||||||
await page.getByText('bracket').click()
|
await page.getByText('bracket').click()
|
||||||
|
|
||||||
await expect(
|
await expect(
|
||||||
page.getByRole('button', { name: 'Start Sketch' })
|
page.getByRole('button', { name: 'Start Sketch' })
|
||||||
).toBeEnabled({
|
).toBeEnabled({
|
||||||
|
@ -388,7 +388,7 @@ test.describe('Sketch tests', () => {
|
|||||||
const dragPX = 40
|
const dragPX = 40
|
||||||
|
|
||||||
await page
|
await page
|
||||||
.getByText('circle({ center: [4.61, -5.01], radius: 8 }, %)')
|
.getByText('circle({ center = [4.61, -5.01], radius = 8 }, %)')
|
||||||
.click()
|
.click()
|
||||||
await expect(
|
await expect(
|
||||||
page.getByRole('button', { name: 'Edit Sketch' })
|
page.getByRole('button', { name: 'Edit Sketch' })
|
||||||
|
@ -30,103 +30,126 @@ import { reportRejection } from 'lib/trap'
|
|||||||
|
|
||||||
// The below is copied from playwright-core because it exports none of them :(
|
// The below is copied from playwright-core because it exports none of them :(
|
||||||
import { Env, BrowserContextOptions } from 'playwright-core'
|
import { Env, BrowserContextOptions } from 'playwright-core'
|
||||||
import type * as channels from '@protocol/channels';
|
import type * as channels from '@protocol/channels'
|
||||||
|
|
||||||
// Copied from playwright-core
|
// Copied from playwright-core
|
||||||
function envObjectToArray(env: Env): { name: string, value: string }[] {
|
function envObjectToArray(env: Env): { name: string; value: string }[] {
|
||||||
const result: { name: string, value: string }[] = [];
|
const result: { name: string; value: string }[] = []
|
||||||
for (const name in env) {
|
for (const name in env) {
|
||||||
if (!Object.is(env[name], undefined))
|
if (!Object.is(env[name], undefined))
|
||||||
result.push({ name, value: String(env[name]) });
|
result.push({ name, value: String(env[name]) })
|
||||||
}
|
}
|
||||||
return result;
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
// Copied from playwright-core
|
// Copied from playwright-core
|
||||||
export async function toClientCertificatesProtocol(certs?: BrowserContextOptions['clientCertificates']): Promise<channels.PlaywrightNewRequestParams['clientCertificates']> {
|
export async function toClientCertificatesProtocol(
|
||||||
if (!certs)
|
certs?: BrowserContextOptions['clientCertificates']
|
||||||
return undefined;
|
): Promise<channels.PlaywrightNewRequestParams['clientCertificates']> {
|
||||||
|
if (!certs) return undefined
|
||||||
|
|
||||||
const bufferizeContent = async (value?: Buffer, path?: string): Promise<Buffer | undefined> => {
|
const bufferizeContent = async (
|
||||||
if (value)
|
value?: Buffer,
|
||||||
return value;
|
path?: string
|
||||||
if (path)
|
): Promise<Buffer | undefined> => {
|
||||||
return await fs.promises.readFile(path);
|
if (value) return value
|
||||||
};
|
if (path) return await fs.promises.readFile(path)
|
||||||
|
}
|
||||||
|
|
||||||
return await Promise.all(certs.map(async cert => ({
|
return await Promise.all(
|
||||||
origin: cert.origin,
|
certs.map(async (cert) => ({
|
||||||
cert: await bufferizeContent(cert.cert, cert.certPath),
|
origin: cert.origin,
|
||||||
key: await bufferizeContent(cert.key, cert.keyPath),
|
cert: await bufferizeContent(cert.cert, cert.certPath),
|
||||||
pfx: await bufferizeContent(cert.pfx, cert.pfxPath),
|
key: await bufferizeContent(cert.key, cert.keyPath),
|
||||||
passphrase: cert.passphrase,
|
pfx: await bufferizeContent(cert.pfx, cert.pfxPath),
|
||||||
})));
|
passphrase: cert.passphrase,
|
||||||
|
}))
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Copied from playwright-core
|
// Copied from playwright-core
|
||||||
function toAcceptDownloadsProtocol(acceptDownloads?: boolean) {
|
function toAcceptDownloadsProtocol(acceptDownloads?: boolean) {
|
||||||
if (acceptDownloads === undefined)
|
if (acceptDownloads === undefined) return undefined
|
||||||
return undefined;
|
if (acceptDownloads) return 'accept'
|
||||||
if (acceptDownloads)
|
return 'deny'
|
||||||
return 'accept';
|
|
||||||
return 'deny';
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Copied from playwright-core
|
// Copied from playwright-core
|
||||||
function prepareRecordHarOptions(options: BrowserContextOptions['recordHar']): channels.RecordHarOptions | undefined {
|
function prepareRecordHarOptions(
|
||||||
if (!options)
|
options: BrowserContextOptions['recordHar']
|
||||||
return;
|
): channels.RecordHarOptions | undefined {
|
||||||
|
if (!options) return
|
||||||
return {
|
return {
|
||||||
path: options.path,
|
path: options.path,
|
||||||
content: options.content || (options.omitContent ? 'omit' : undefined),
|
content: options.content || (options.omitContent ? 'omit' : undefined),
|
||||||
urlGlob: isString(options.urlFilter) ? options.urlFilter : undefined,
|
urlGlob: isString(options.urlFilter) ? options.urlFilter : undefined,
|
||||||
urlRegexSource: isRegExp(options.urlFilter) ? options.urlFilter.source : undefined,
|
urlRegexSource: isRegExp(options.urlFilter)
|
||||||
urlRegexFlags: isRegExp(options.urlFilter) ? options.urlFilter.flags : undefined,
|
? options.urlFilter.source
|
||||||
mode: options.mode
|
: undefined,
|
||||||
};
|
urlRegexFlags: isRegExp(options.urlFilter)
|
||||||
}
|
? options.urlFilter.flags
|
||||||
|
: undefined,
|
||||||
// Copied from playwright-core
|
mode: options.mode,
|
||||||
async function prepareStorageState(options: BrowserContextOptions): Promise<channels.BrowserNewContextParams['storageState']> {
|
|
||||||
if (typeof options.storageState !== 'string')
|
|
||||||
return options.storageState;
|
|
||||||
try {
|
|
||||||
return JSON.parse(await fs.promises.readFile(options.storageState, 'utf8'));
|
|
||||||
} catch (e) {
|
|
||||||
rewriteErrorMessage(e, `Error reading storage state from ${options.storageState}:\n` + e.message);
|
|
||||||
throw e;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Copied from playwright-core
|
// Copied from playwright-core
|
||||||
async function prepareBrowserContextParams(options: BrowserContextOptions): Promise<channels.BrowserNewContextParams> {
|
async function prepareStorageState(
|
||||||
|
options: BrowserContextOptions
|
||||||
|
): Promise<channels.BrowserNewContextParams['storageState']> {
|
||||||
|
if (typeof options.storageState !== 'string') return options.storageState
|
||||||
|
try {
|
||||||
|
return JSON.parse(await fs.promises.readFile(options.storageState, 'utf8'))
|
||||||
|
} catch (e) {
|
||||||
|
rewriteErrorMessage(
|
||||||
|
e,
|
||||||
|
`Error reading storage state from ${options.storageState}:\n` + e.message
|
||||||
|
)
|
||||||
|
throw e
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Copied from playwright-core
|
||||||
|
async function prepareBrowserContextParams(
|
||||||
|
options: BrowserContextOptions
|
||||||
|
): Promise<channels.BrowserNewContextParams> {
|
||||||
if (options.videoSize && !options.videosPath)
|
if (options.videoSize && !options.videosPath)
|
||||||
throw new Error(`"videoSize" option requires "videosPath" to be specified`);
|
throw new Error(`"videoSize" option requires "videosPath" to be specified`)
|
||||||
if (options.extraHTTPHeaders)
|
if (options.extraHTTPHeaders)
|
||||||
network.validateHeaders(options.extraHTTPHeaders);
|
network.validateHeaders(options.extraHTTPHeaders)
|
||||||
const contextParams: channels.BrowserNewContextParams = {
|
const contextParams: channels.BrowserNewContextParams = {
|
||||||
...options,
|
...options,
|
||||||
viewport: options.viewport === null ? undefined : options.viewport,
|
viewport: options.viewport === null ? undefined : options.viewport,
|
||||||
noDefaultViewport: options.viewport === null,
|
noDefaultViewport: options.viewport === null,
|
||||||
extraHTTPHeaders: options.extraHTTPHeaders ? headersObjectToArray(options.extraHTTPHeaders) : undefined,
|
extraHTTPHeaders: options.extraHTTPHeaders
|
||||||
|
? headersObjectToArray(options.extraHTTPHeaders)
|
||||||
|
: undefined,
|
||||||
storageState: await prepareStorageState(options),
|
storageState: await prepareStorageState(options),
|
||||||
serviceWorkers: options.serviceWorkers,
|
serviceWorkers: options.serviceWorkers,
|
||||||
recordHar: prepareRecordHarOptions(options.recordHar),
|
recordHar: prepareRecordHarOptions(options.recordHar),
|
||||||
colorScheme: options.colorScheme === null ? 'no-override' : options.colorScheme,
|
colorScheme:
|
||||||
reducedMotion: options.reducedMotion === null ? 'no-override' : options.reducedMotion,
|
options.colorScheme === null ? 'no-override' : options.colorScheme,
|
||||||
forcedColors: options.forcedColors === null ? 'no-override' : options.forcedColors,
|
reducedMotion:
|
||||||
|
options.reducedMotion === null ? 'no-override' : options.reducedMotion,
|
||||||
|
forcedColors:
|
||||||
|
options.forcedColors === null ? 'no-override' : options.forcedColors,
|
||||||
acceptDownloads: toAcceptDownloadsProtocol(options.acceptDownloads),
|
acceptDownloads: toAcceptDownloadsProtocol(options.acceptDownloads),
|
||||||
clientCertificates: await toClientCertificatesProtocol(options.clientCertificates),
|
clientCertificates: await toClientCertificatesProtocol(
|
||||||
};
|
options.clientCertificates
|
||||||
|
),
|
||||||
|
}
|
||||||
if (!contextParams.recordVideo && options.videosPath) {
|
if (!contextParams.recordVideo && options.videosPath) {
|
||||||
contextParams.recordVideo = {
|
contextParams.recordVideo = {
|
||||||
dir: options.videosPath,
|
dir: options.videosPath,
|
||||||
size: options.videoSize
|
size: options.videoSize,
|
||||||
};
|
}
|
||||||
}
|
}
|
||||||
if (contextParams.recordVideo && contextParams.recordVideo.dir)
|
if (contextParams.recordVideo && contextParams.recordVideo.dir)
|
||||||
contextParams.recordVideo.dir = path.resolve(process.cwd(), contextParams.recordVideo.dir);
|
contextParams.recordVideo.dir = path.resolve(
|
||||||
return contextParams;
|
process.cwd(),
|
||||||
|
contextParams.recordVideo.dir
|
||||||
|
)
|
||||||
|
return contextParams
|
||||||
}
|
}
|
||||||
|
|
||||||
const toNormalizedCode = (text: string) => {
|
const toNormalizedCode = (text: string) => {
|
||||||
@ -973,7 +996,10 @@ export async function setup(
|
|||||||
localStorage.clear()
|
localStorage.clear()
|
||||||
localStorage.setItem('TOKEN_PERSIST_KEY', token)
|
localStorage.setItem('TOKEN_PERSIST_KEY', token)
|
||||||
localStorage.setItem('persistCode', ``)
|
localStorage.setItem('persistCode', ``)
|
||||||
localStorage.setItem(PERSIST_MODELING_CONTEXT, JSON.stringify({openPanes: ['code']}))
|
localStorage.setItem(
|
||||||
|
PERSIST_MODELING_CONTEXT,
|
||||||
|
JSON.stringify({ openPanes: ['code'] })
|
||||||
|
)
|
||||||
localStorage.setItem(settingsKey, settings)
|
localStorage.setItem(settingsKey, settings)
|
||||||
localStorage.setItem(IS_PLAYWRIGHT_KEY, 'true')
|
localStorage.setItem(IS_PLAYWRIGHT_KEY, 'true')
|
||||||
localStorage.setItem('PLAYWRIGHT_TEST_DIR', PLAYWRIGHT_TEST_DIR)
|
localStorage.setItem('PLAYWRIGHT_TEST_DIR', PLAYWRIGHT_TEST_DIR)
|
||||||
|
@ -95,7 +95,9 @@ test.describe('Testing segment overlays', () => {
|
|||||||
})
|
})
|
||||||
.click()
|
.click()
|
||||||
await expect(page.locator('.cm-content')).toContainText(expectFinal)
|
await expect(page.locator('.cm-content')).toContainText(expectFinal)
|
||||||
await editor.expectEditor.toContain(expectFinal, { shouldNormalise: true })
|
await editor.expectEditor.toContain(expectFinal, {
|
||||||
|
shouldNormalise: true,
|
||||||
|
})
|
||||||
await editor.expectEditor.toContain(expectFinal, {
|
await editor.expectEditor.toContain(expectFinal, {
|
||||||
shouldNormalise: true,
|
shouldNormalise: true,
|
||||||
})
|
})
|
||||||
|
@ -223,15 +223,15 @@ export const test = (
|
|||||||
if (tronApp instanceof AuthenticatedTronApp) {
|
if (tronApp instanceof AuthenticatedTronApp) {
|
||||||
tronApp.context.folderSetupFn = async function (fn) {
|
tronApp.context.folderSetupFn = async function (fn) {
|
||||||
return fn(tronApp.dir)
|
return fn(tronApp.dir)
|
||||||
.then(() => tronApp.page.reload())
|
.then(() => tronApp.page.reload())
|
||||||
.then(() => ({
|
.then(() => ({
|
||||||
dir: tronApp.dir,
|
dir: tronApp.dir,
|
||||||
}))
|
}))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!firstUrl) {
|
if (!firstUrl) {
|
||||||
await tronApp.page.getByText('Your Projects').count();
|
await tronApp.page.getByText('Your Projects').count()
|
||||||
firstUrl = tronApp.page.url()
|
firstUrl = tronApp.page.url()
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -243,7 +243,7 @@ export const test = (
|
|||||||
// });
|
// });
|
||||||
|
|
||||||
await tronApp.electronApp.evaluate(({ app }, projectDirName) => {
|
await tronApp.electronApp.evaluate(({ app }, projectDirName) => {
|
||||||
console.log("ABCDEFGHI", app.testProperty['TEST_SETTINGS_FILE_KEY'])
|
console.log('ABCDEFGHI', app.testProperty['TEST_SETTINGS_FILE_KEY'])
|
||||||
app.testProperty['TEST_SETTINGS_FILE_KEY'] = projectDirName
|
app.testProperty['TEST_SETTINGS_FILE_KEY'] = projectDirName
|
||||||
}, tronApp.dir)
|
}, tronApp.dir)
|
||||||
|
|
||||||
|
@ -152,7 +152,7 @@
|
|||||||
"@iarna/toml": "^2.2.5",
|
"@iarna/toml": "^2.2.5",
|
||||||
"@lezer/generator": "^1.7.1",
|
"@lezer/generator": "^1.7.1",
|
||||||
"@nabla/vite-plugin-eslint": "^2.0.5",
|
"@nabla/vite-plugin-eslint": "^2.0.5",
|
||||||
"@playwright/test": "^1.46.1",
|
"@playwright/test": "^1.49.0",
|
||||||
"@testing-library/jest-dom": "^5.14.1",
|
"@testing-library/jest-dom": "^5.14.1",
|
||||||
"@testing-library/react": "^15.0.2",
|
"@testing-library/react": "^15.0.2",
|
||||||
"@types/d3-force": "^3.0.10",
|
"@types/d3-force": "^3.0.10",
|
||||||
|
@ -391,7 +391,9 @@ const getAppFolderName = () => {
|
|||||||
|
|
||||||
export const getAppSettingsFilePath = async () => {
|
export const getAppSettingsFilePath = async () => {
|
||||||
const isTestEnv = window.electron.process.env.IS_PLAYWRIGHT === 'true'
|
const isTestEnv = window.electron.process.env.IS_PLAYWRIGHT === 'true'
|
||||||
const testSettingsPath = await window.electron.getAppTestProperty('TEST_SETTINGS_FILE_KEY')
|
const testSettingsPath = await window.electron.getAppTestProperty(
|
||||||
|
'TEST_SETTINGS_FILE_KEY'
|
||||||
|
)
|
||||||
const appConfig = await window.electron.getPath('appData')
|
const appConfig = await window.electron.getPath('appData')
|
||||||
const fullPath = isTestEnv
|
const fullPath = isTestEnv
|
||||||
? testSettingsPath
|
? testSettingsPath
|
||||||
@ -408,7 +410,9 @@ export const getAppSettingsFilePath = async () => {
|
|||||||
}
|
}
|
||||||
const getTokenFilePath = async () => {
|
const getTokenFilePath = async () => {
|
||||||
const isTestEnv = window.electron.process.env.IS_PLAYWRIGHT === 'true'
|
const isTestEnv = window.electron.process.env.IS_PLAYWRIGHT === 'true'
|
||||||
const testSettingsPath = await window.electron.getAppTestProperty('TEST_SETTINGS_FILE_KEY')
|
const testSettingsPath = await window.electron.getAppTestProperty(
|
||||||
|
'TEST_SETTINGS_FILE_KEY'
|
||||||
|
)
|
||||||
const appConfig = await window.electron.getPath('appData')
|
const appConfig = await window.electron.getPath('appData')
|
||||||
const fullPath = isTestEnv
|
const fullPath = isTestEnv
|
||||||
? testSettingsPath
|
? testSettingsPath
|
||||||
|
@ -18,7 +18,9 @@ const save_ = async (file: ModelingAppFile, toastId: string) => {
|
|||||||
|
|
||||||
if (window.electron.process.env.IS_PLAYWRIGHT) {
|
if (window.electron.process.env.IS_PLAYWRIGHT) {
|
||||||
// Skip file picker, save to the test dir downloads directory
|
// Skip file picker, save to the test dir downloads directory
|
||||||
const testSettingsPath = await window.electron.getAppTestProperty('TEST_SETTINGS_FILE_KEY')
|
const testSettingsPath = await window.electron.getAppTestProperty(
|
||||||
|
'TEST_SETTINGS_FILE_KEY'
|
||||||
|
)
|
||||||
const downloadDir = window.electron.join(
|
const downloadDir = window.electron.join(
|
||||||
testSettingsPath,
|
testSettingsPath,
|
||||||
'downloads-during-playwright'
|
'downloads-during-playwright'
|
||||||
|
36
src/main.ts
36
src/main.ts
@ -62,22 +62,26 @@ if (process.defaultApp) {
|
|||||||
registerStartupListeners()
|
registerStartupListeners()
|
||||||
|
|
||||||
const createWindow = (filePath?: string, reuse?: boolean): BrowserWindow => {
|
const createWindow = (filePath?: string, reuse?: boolean): BrowserWindow => {
|
||||||
const newWindow = reuse ? mainWindow : new BrowserWindow({
|
const newWindow = reuse
|
||||||
autoHideMenuBar: true,
|
? mainWindow
|
||||||
show: false,
|
: new BrowserWindow({
|
||||||
width: 1800,
|
autoHideMenuBar: true,
|
||||||
height: 1200,
|
show: false,
|
||||||
webPreferences: {
|
width: 1800,
|
||||||
nodeIntegration: false, // do not give the application implicit system access
|
height: 1200,
|
||||||
contextIsolation: true, // expose system functions in preload
|
webPreferences: {
|
||||||
sandbox: false, // expose nodejs in preload
|
nodeIntegration: false, // do not give the application implicit system access
|
||||||
preload: path.join(__dirname, './preload.js'),
|
contextIsolation: true, // expose system functions in preload
|
||||||
},
|
sandbox: false, // expose nodejs in preload
|
||||||
icon: path.resolve(process.cwd(), 'assets', 'icon.png'),
|
preload: path.join(__dirname, './preload.js'),
|
||||||
frame: os.platform() !== 'darwin',
|
},
|
||||||
titleBarStyle: 'hiddenInset',
|
icon: path.resolve(process.cwd(), 'assets', 'icon.png'),
|
||||||
backgroundColor: nativeTheme.shouldUseDarkColors ? '#1C1C1C' : '#FCFCFC',
|
frame: os.platform() !== 'darwin',
|
||||||
})
|
titleBarStyle: 'hiddenInset',
|
||||||
|
backgroundColor: nativeTheme.shouldUseDarkColors
|
||||||
|
? '#1C1C1C'
|
||||||
|
: '#FCFCFC',
|
||||||
|
})
|
||||||
|
|
||||||
// and load the index.html of the app.
|
// and load the index.html of the app.
|
||||||
if (MAIN_WINDOW_VITE_DEV_SERVER_URL) {
|
if (MAIN_WINDOW_VITE_DEV_SERVER_URL) {
|
||||||
|
@ -31,7 +31,8 @@ const onUpdateDownloadStart = (
|
|||||||
const onUpdateError = (callback: (value: Error) => void) =>
|
const onUpdateError = (callback: (value: Error) => void) =>
|
||||||
ipcRenderer.on('update-error', (_event: any, value) => callback(value))
|
ipcRenderer.on('update-error', (_event: any, value) => callback(value))
|
||||||
const appRestart = () => ipcRenderer.invoke('app.restart')
|
const appRestart = () => ipcRenderer.invoke('app.restart')
|
||||||
const getAppTestProperty = (propertyName: string) => ipcRenderer.invoke('app.testProperty', propertyName)
|
const getAppTestProperty = (propertyName: string) =>
|
||||||
|
ipcRenderer.invoke('app.testProperty', propertyName)
|
||||||
|
|
||||||
const isMac = os.platform() === 'darwin'
|
const isMac = os.platform() === 'darwin'
|
||||||
const isWindows = os.platform() === 'win32'
|
const isWindows = os.platform() === 'win32'
|
||||||
|
59
yarn.lock
59
yarn.lock
@ -2131,12 +2131,12 @@
|
|||||||
resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33"
|
resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33"
|
||||||
integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==
|
integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==
|
||||||
|
|
||||||
"@playwright/test@^1.46.1":
|
"@playwright/test@^1.49.0":
|
||||||
version "1.46.1"
|
version "1.49.1"
|
||||||
resolved "https://registry.yarnpkg.com/@playwright/test/-/test-1.46.1.tgz#a8dfdcd623c4c23bb1b7ea588058aad41055c188"
|
resolved "https://registry.yarnpkg.com/@playwright/test/-/test-1.49.1.tgz#55fa360658b3187bfb6371e2f8a64f50ef80c827"
|
||||||
integrity sha512-Fq6SwLujA/DOIvNC2EL/SojJnkKf/rAwJ//APpJJHRyMi1PdKrY3Az+4XNQ51N4RTbItbIByQ0jgd1tayq1aeA==
|
integrity sha512-Ky+BVzPz8pL6PQxHqNRW1k3mIyv933LML7HktS8uik0bUXNCdPhoS/kLihiO1tMf/egaJb4IutXd7UywvXEW+g==
|
||||||
dependencies:
|
dependencies:
|
||||||
playwright "1.46.1"
|
playwright "1.49.1"
|
||||||
|
|
||||||
"@react-hook/latest@^1.0.2":
|
"@react-hook/latest@^1.0.2":
|
||||||
version "1.0.3"
|
version "1.0.3"
|
||||||
@ -7506,17 +7506,17 @@ pkg-types@^1.0.3, pkg-types@^1.1.1:
|
|||||||
mlly "^1.7.1"
|
mlly "^1.7.1"
|
||||||
pathe "^1.1.2"
|
pathe "^1.1.2"
|
||||||
|
|
||||||
playwright-core@1.46.1:
|
playwright-core@1.49.1:
|
||||||
version "1.46.1"
|
version "1.49.1"
|
||||||
resolved "https://registry.yarnpkg.com/playwright-core/-/playwright-core-1.46.1.tgz#28f3ab35312135dda75b0c92a3e5c0e7edb9cc8b"
|
resolved "https://registry.yarnpkg.com/playwright-core/-/playwright-core-1.49.1.tgz#32c62f046e950f586ff9e35ed490a424f2248015"
|
||||||
integrity sha512-h9LqIQaAv+CYvWzsZ+h3RsrqCStkBHlgo6/TJlFst3cOTlLghBQlJwPOZKQJTKNaD3QIB7aAVQ+gfWbN3NXB7A==
|
integrity sha512-BzmpVcs4kE2CH15rWfzpjzVGhWERJfmnXmniSyKeRZUs9Ws65m+RGIi7mjJK/euCegfn3i7jvqWeWyHe9y3Vgg==
|
||||||
|
|
||||||
playwright@1.46.1:
|
playwright@1.49.1:
|
||||||
version "1.46.1"
|
version "1.49.1"
|
||||||
resolved "https://registry.yarnpkg.com/playwright/-/playwright-1.46.1.tgz#ea562bc48373648e10420a10c16842f0b227c218"
|
resolved "https://registry.yarnpkg.com/playwright/-/playwright-1.49.1.tgz#830266dbca3008022afa7b4783565db9944ded7c"
|
||||||
integrity sha512-oPcr1yqoXLCkgKtD5eNUPLiN40rYEM39odNpIb6VE6S7/15gJmA1NzVv6zJYusV0e7tzvkU/utBFNa/Kpxmwng==
|
integrity sha512-VYL8zLoNTBxVOrJBbDuRgDWa3i+mfQgDTrL8Ah9QXZ7ax4Dsj0MSq5bYgytRnDVVe+njoKnfsYkH3HzqVj5UZA==
|
||||||
dependencies:
|
dependencies:
|
||||||
playwright-core "1.46.1"
|
playwright-core "1.49.1"
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
fsevents "2.3.2"
|
fsevents "2.3.2"
|
||||||
|
|
||||||
@ -8533,16 +8533,7 @@ string-natural-compare@^3.0.1:
|
|||||||
resolved "https://registry.yarnpkg.com/string-natural-compare/-/string-natural-compare-3.0.1.tgz#7a42d58474454963759e8e8b7ae63d71c1e7fdf4"
|
resolved "https://registry.yarnpkg.com/string-natural-compare/-/string-natural-compare-3.0.1.tgz#7a42d58474454963759e8e8b7ae63d71c1e7fdf4"
|
||||||
integrity sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw==
|
integrity sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw==
|
||||||
|
|
||||||
"string-width-cjs@npm:string-width@^4.2.0":
|
"string-width-cjs@npm:string-width@^4.2.0", "string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3:
|
||||||
version "4.2.3"
|
|
||||||
resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
|
|
||||||
integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
|
|
||||||
dependencies:
|
|
||||||
emoji-regex "^8.0.0"
|
|
||||||
is-fullwidth-code-point "^3.0.0"
|
|
||||||
strip-ansi "^6.0.1"
|
|
||||||
|
|
||||||
"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3:
|
|
||||||
version "4.2.3"
|
version "4.2.3"
|
||||||
resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
|
resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
|
||||||
integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
|
integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
|
||||||
@ -8636,14 +8627,7 @@ string_decoder@~1.1.1:
|
|||||||
dependencies:
|
dependencies:
|
||||||
safe-buffer "~5.1.0"
|
safe-buffer "~5.1.0"
|
||||||
|
|
||||||
"strip-ansi-cjs@npm:strip-ansi@^6.0.1":
|
"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1:
|
||||||
version "6.0.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
|
|
||||||
integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
|
|
||||||
dependencies:
|
|
||||||
ansi-regex "^5.0.1"
|
|
||||||
|
|
||||||
strip-ansi@^6.0.0, strip-ansi@^6.0.1:
|
|
||||||
version "6.0.1"
|
version "6.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
|
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
|
||||||
integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
|
integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
|
||||||
@ -9500,16 +9484,7 @@ word-wrap@^1.2.5:
|
|||||||
resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34"
|
resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34"
|
||||||
integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==
|
integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==
|
||||||
|
|
||||||
"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0":
|
"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0:
|
||||||
version "7.0.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
|
|
||||||
integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
|
|
||||||
dependencies:
|
|
||||||
ansi-styles "^4.0.0"
|
|
||||||
string-width "^4.1.0"
|
|
||||||
strip-ansi "^6.0.0"
|
|
||||||
|
|
||||||
wrap-ansi@^7.0.0:
|
|
||||||
version "7.0.0"
|
version "7.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
|
resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
|
||||||
integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
|
integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
|
||||||
|
Reference in New Issue
Block a user