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",
|
||||||
|
@ -119,6 +119,11 @@
|
|||||||
"title": "Pipe and Flange Assembly",
|
"title": "Pipe and Flange Assembly",
|
||||||
"description": "A crucial component in various piping systems, designed to facilitate the connection, disconnection, and access to piping for inspection, cleaning, and modifications. This assembly combines pipes (long cylindrical conduits) with flanges (plate-like fittings) to create a secure yet detachable joint."
|
"description": "A crucial component in various piping systems, designed to facilitate the connection, disconnection, and access to piping for inspection, cleaning, and modifications. This assembly combines pipes (long cylindrical conduits) with flanges (plate-like fittings) to create a secure yet detachable joint."
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"file": "pipe-with-bend.kcl",
|
||||||
|
"title": "Pipe with bend",
|
||||||
|
"description": "A tubular section or hollow cylinder, usually but not necessarily of circular cross-section, used mainly to convey substances that can flow."
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"file": "poopy-shoe.kcl",
|
"file": "poopy-shoe.kcl",
|
||||||
"title": "Poopy Shoe",
|
"title": "Poopy Shoe",
|
||||||
|
@ -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