From a0ff99f5773648f5225e9a1fb4eabb5ae6b94d42 Mon Sep 17 00:00:00 2001 From: Lukas Harbarth Date: Mon, 16 Mar 2026 13:06:32 +0100 Subject: [PATCH 1/7] test(SplitterLayout): migrate to playwright test --- .../SplitterLayout/SplitterLayout.cy.tsx | 261 ------------------ .../test/SplitterLayout.spec.tsx | 182 ++++++++++++ .../test/SplitterLayoutTestComponents.tsx | 135 +++++++++ playwright-ct.config.ts | 3 +- 4 files changed, 319 insertions(+), 262 deletions(-) delete mode 100644 packages/main/src/components/SplitterLayout/SplitterLayout.cy.tsx create mode 100644 packages/main/src/components/SplitterLayout/test/SplitterLayout.spec.tsx create mode 100644 packages/main/src/components/SplitterLayout/test/SplitterLayoutTestComponents.tsx diff --git a/packages/main/src/components/SplitterLayout/SplitterLayout.cy.tsx b/packages/main/src/components/SplitterLayout/SplitterLayout.cy.tsx deleted file mode 100644 index 637b1caa587..00000000000 --- a/packages/main/src/components/SplitterLayout/SplitterLayout.cy.tsx +++ /dev/null @@ -1,261 +0,0 @@ -import { useState } from 'react'; -import type { SplitterLayoutPropTypes } from '../..'; -import { FlexBox, Text, Button, Label, SplitterElement, SplitterLayout } from '../..'; -import { cypressPassThroughTestsFactory } from '@/cypress/support/utils'; - -function TestComp({ vertical, dir }: { vertical: SplitterLayoutPropTypes['vertical']; dir: string }) { - const [mount, setMount] = useState(false); - const [dep, setDep] = useState(false); - return ( - - - - - - - - - - {mount && ( - - Additional Child - - )} - - ); -} - -function moveSpacer(dir: string, vertical: boolean) { - cy.findAllByRole('separator').eq(0).click(); - cy.wait(50); - const rtlSafeLeft = `Arrow${dir === 'rtl' && !vertical ? 'Right' : 'Left'}`; - const rtlSafeUp = `Arrow${dir === 'rtl' && !vertical ? 'Down' : 'Up'}`; - for (let i = 0; i < 5; i++) { - cy.findAllByRole('separator').eq(0).trigger('keydown', { code: rtlSafeLeft, force: true }); - cy.findAllByRole('separator').eq(0).trigger('keyup', { code: rtlSafeLeft, force: true }); - cy.wait(50); - cy.findAllByRole('separator').eq(0).trigger('keydown', { code: rtlSafeUp, force: true }); - cy.findAllByRole('separator').eq(0).trigger('keyup', { code: rtlSafeUp, force: true }); - cy.wait(50); - } -} - -describe('SplitterLayout', () => { - ['ltr', 'rtl'].forEach((dir) => { - [false, true].forEach((vertical) => { - it(`Splitter Move & Reset - ${dir} - vertical: ${vertical}`, () => { - cy.viewport(2000, 2000); - cy.mount(); - - cy.findByTestId('se1').should('have.css', 'flex', '0 1 calc(70% - 16px)'); - cy.findByTestId('se2').should('have.css', 'flex', '0 1 30%'); - - moveSpacer(dir, vertical); - cy.findByTestId('se1').should('have.css', 'flex', '0 0 1184px'); - cy.findByTestId('se2').should('have.css', 'flex', '0 0 800px'); - - cy.findByText('Trigger dep').click({ force: true }); - - cy.findByTestId('se1').should('have.css', 'flex', '0 1 calc(70% - 16px)'); - cy.findByTestId('se2').should('have.css', 'flex', '0 1 30%'); - - moveSpacer(dir, vertical); - cy.findByTestId('se1').should('have.css', 'flex', '0 0 1184px'); - cy.findByTestId('se2').should('have.css', 'flex', '0 0 800px'); - - cy.findByText('Add child').click({ force: true }); - cy.findByTestId('se1').should('have.css', 'flex', '0 1 calc(70% - 16px)'); - cy.findByTestId('se2').should('have.css', 'flex', '0 1 calc(25% - 16px)'); - cy.findByTestId('se3').should('have.css', 'flex', '0 1 5%'); - - moveSpacer(dir, vertical); - - cy.viewport(1000, 1000); - - cy.findByTestId('se1').should('have.css', 'flex', '0 1 calc(70% - 16px)'); - cy.findByTestId('se2').should('have.css', 'flex', '0 1 calc(25% - 16px)'); - cy.findByTestId('se3').should('have.css', 'flex', '0 1 5%'); - }); - }); - }); - - it('SplitterLayout w/ multiple SplitterElements', () => { - const click = cy.spy().as('click'); - [true, false].forEach((vertical) => { - cy.mount( - - - - - - - - - - - , - ); - cy.findByTestId('btn').click(); - cy.get('[role="separator"]').first().click(); - // fallback click to prevent flakyness - cy.get('[role="separator"]') - .first() - .click() - .should('have.length', 1) - .should('have.css', 'border', '2px solid rgb(0, 50, 165)'); - cy.findByTestId('sl').should('have.css', 'width', '800px').should('have.css', 'height', '800px'); - cy.findByTestId('se2') - .should('have.css', 'flex', '0 1 400px') - .should('have.css', vertical ? 'min-height' : 'min-width', '300px'); - cy.findByTestId('se3') - .should('have.css', 'flex', '0 0 200px') - .should('have.css', vertical ? 'min-height' : 'min-width', '0px'); - }); - cy.get('@click').should('have.been.calledTwice'); - }); - - it('empty content', () => { - cy.mount(); - cy.findByTestId('sl').should('not.be.visible').should('exist'); - }); - - [true, false].forEach((vertical) => { - it(`controlled width (${vertical ? 'vertical' : 'horizontal'})`, () => { - function getMouseMoveArgs(amount: number): [number, number] { - return vertical ? [0, amount] : [amount, 0]; - } - const resize = cy.spy().as('resize'); - const TestComp = () => { - const [size0, setSize0] = useState('200px'); - const [size1, setSize1] = useState(200); - const [size2, setSize2] = useState('auto'); - const [size3, setSize3] = useState('200px'); - const setter = [setSize0, setSize1, setSize2, setSize3]; - return ( - <> - { - resize(e); - e.areas.forEach((item) => { - if (item.area.dataset.index === '1') { - setter[Number(item.area.dataset.index)](item.size); - } else { - //@ts-expect-error: supported - setter[Number(item.area.dataset.index)](item.size + 'px'); - } - }); - }} - > - - - Content 1 - - - - - {`Content 2 - with - multi - lines`} - - - - - - Content 3 with long text: Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy - eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et - accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est - Lorem ipsum dolor sit amet. - - - - - - Content 4 - - - - {size0} -
- {size1} -
- {size2} -
- {size3} - - ); - }; - - cy.mount(); - - cy.wait(100); - - cy.get('@resize').should('not.have.been.called'); - - cy.findAllByRole('separator').eq(0).realMouseDown({ position: 'center' }); - cy.wait(50); - cy.findAllByRole('separator') - .eq(0) - .realMouseMove(...getMouseMoveArgs(-100), { - position: 'center', - scrollBehavior: false, - }) - .realMouseUp({ position: 'center' }); - - cy.get('@resize').should('have.been.called'); - - cy.findByTestId('0').should(($el) => { - expect(parseInt($el.text(), 10)).to.be.within(99, 101); - }); - cy.findByTestId('1').should(($el) => { - expect(parseInt($el.text(), 10)).to.be.within(299, 301); - }); - cy.findByTestId('2').should('have.text', 'auto'); - cy.findByTestId('3').invoke('text').should('equal', '200px'); - - cy.findAllByRole('separator').eq(0).realMouseDown({ position: 'center' }); - cy.wait(50); - // drag across bounding box - cy.get('body') - .realMouseMove(...getMouseMoveArgs(300), { - position: 'center', - scrollBehavior: false, - }) - .realMouseUp({ position: 'center' }); - - cy.findByTestId('0').should(($el) => { - expect(parseInt($el.text(), 10)).to.be.within(383, 385); - }); - cy.findByTestId('1').should(($el) => { - expect(parseInt($el.text(), 10)).to.be.within(15, 17); - }); - cy.findByTestId('2').should('have.text', 'auto'); - cy.findByTestId('3').invoke('text').should('equal', '200px'); - - cy.findAllByRole('separator').eq(2).click().realPress('ArrowDown').realPress('ArrowDown').realPress('ArrowDown'); - - cy.findByTestId('0').should(($el) => { - expect(parseInt($el.text(), 10)).to.be.within(383, 385); - }); - cy.findByTestId('1').should(($el) => { - expect(parseInt($el.text(), 10)).to.be.within(15, 17); - }); - cy.findByTestId('2').should('have.text', '360px'); - cy.findByTestId('3').should('have.text', '140px'); - }); - }); - - cypressPassThroughTestsFactory(SplitterLayout, { children: Content }); -}); diff --git a/packages/main/src/components/SplitterLayout/test/SplitterLayout.spec.tsx b/packages/main/src/components/SplitterLayout/test/SplitterLayout.spec.tsx new file mode 100644 index 00000000000..914d3f30fed --- /dev/null +++ b/packages/main/src/components/SplitterLayout/test/SplitterLayout.spec.tsx @@ -0,0 +1,182 @@ +import { expect, test } from '@playwright/experimental-ct-react'; +import type { Page } from '@playwright/test'; +import { + SplitterMoveResetTestComp, + SplitterMultipleElementsTestComp, + SplitterEmptyTestComp, + SplitterControlledTestComp, +} from './SplitterLayoutTestComponents.js'; + +/** + * Move first separator 10 times via ArrowUp/ArrowLeft (RTL aware) + */ +async function moveSpacer(page: Page, dir: string, vertical: boolean) { + const separator = page.locator('[role="separator"]').first(); + await separator.click(); + await page.waitForTimeout(50); + + const rtlSafeLeft = `Arrow${dir === 'rtl' && !vertical ? 'Right' : 'Left'}`; + const rtlSafeUp = `Arrow${dir === 'rtl' && !vertical ? 'Down' : 'Up'}`; + + for (let i = 0; i < 5; i++) { + await page.keyboard.press(rtlSafeLeft); + await page.waitForTimeout(50); + await page.keyboard.press(rtlSafeUp); + await page.waitForTimeout(50); + } +} + +test.describe('SplitterLayout', () => { + for (const dir of ['ltr', 'rtl']) { + for (const vertical of [false, true]) { + test(`Splitter Move & Reset - ${dir} - vertical: ${vertical}`, async ({ mount, page }) => { + await page.setViewportSize({ width: 2000, height: 2000 }); + await mount(); + + const se1 = page.getByTestId('se1'); + const se2 = page.getByTestId('se2'); + + await expect(se1).toHaveCSS('flex', '0 1 calc(70% - 16px)'); + await expect(se2).toHaveCSS('flex', '0 1 30%'); + + await moveSpacer(page, dir, vertical); + await expect(se1).toHaveCSS('flex', '0 0 1184px'); + await expect(se2).toHaveCSS('flex', '0 0 800px'); + + await page.getByText('Trigger dep').click({ force: true }); + await expect(se1).toHaveCSS('flex', '0 1 calc(70% - 16px)'); + await expect(se2).toHaveCSS('flex', '0 1 30%'); + + await moveSpacer(page, dir, vertical); + await expect(se1).toHaveCSS('flex', '0 0 1184px'); + await expect(se2).toHaveCSS('flex', '0 0 800px'); + + await page.getByText('Add child').click({ force: true }); + await expect(se1).toHaveCSS('flex', '0 1 calc(70% - 16px)'); + await expect(se2).toHaveCSS('flex', '0 1 calc(25% - 16px)'); + const se3 = page.getByTestId('se3'); + await expect(se3).toHaveCSS('flex', '0 1 5%'); + + // resetOnSizeChange + await moveSpacer(page, dir, vertical); + await page.setViewportSize({ width: 1000, height: 1000 }); + await expect(se1).toHaveCSS('flex', '0 1 calc(70% - 16px)'); + await expect(se2).toHaveCSS('flex', '0 1 calc(25% - 16px)'); + await expect(se3).toHaveCSS('flex', '0 1 5%'); + }); + } + } + + for (const vertical of [false, true]) { + test(`SplitterLayout w/ multiple SplitterElements - vertical: ${vertical}`, async ({ mount, page }) => { + let clickCount = 0; + await mount( + { + clickCount++; + }} + />, + ); + + await page.getByTestId('btn').click(); + expect(clickCount).toBe(1); + + // only one separator (resizable=false for #2) + const separators = page.locator('[role="separator"]'); + await separators.click(); + await expect(separators).toHaveCount(1); + await expect(separators).toHaveCSS('border', '2px solid rgb(0, 50, 165)'); + + await expect(page.getByTestId('sl')).toHaveCSS('width', '800px'); + await expect(page.getByTestId('sl')).toHaveCSS('height', '800px'); + + const se2 = page.getByTestId('se2'); + await expect(se2).toHaveCSS('flex', '0 1 400px'); + await expect(se2).toHaveCSS(vertical ? 'min-height' : 'min-width', '300px'); + + // Non-resizable element + const se3 = page.getByTestId('se3'); + await expect(se3).toHaveCSS('flex', '0 0 200px'); + await expect(se3).toHaveCSS(vertical ? 'min-height' : 'min-width', '0px'); + }); + } + + test('empty content', async ({ mount, page }) => { + await mount(); + const sl = page.getByTestId('sl'); + await expect(sl).toBeAttached(); + await expect(sl).not.toBeVisible(); + }); + + for (const vertical of [true, false]) { + test(`controlled width (${vertical ? 'vertical' : 'horizontal'})`, async ({ mount, page }) => { + await mount(); + + await expect(page.getByTestId('resize-count')).toHaveText('0'); + await expect(page.getByTestId('0')).toHaveText('200px'); + await expect(page.getByTestId('1')).toHaveText('200'); + await expect(page.getByTestId('2')).toHaveText('auto'); + await expect(page.getByTestId('3')).toHaveText('200px'); + + const sep0 = page.locator('[role="separator"]').nth(0); + const box0 = await sep0.boundingBox(); + const startX0 = box0.x + box0.width / 2; + const startY0 = box0.y + box0.height / 2; + + // move mouse to first separator, drag left/up by 100px, release + await page.mouse.move(startX0, startY0); + await page.mouse.down(); + await page.waitForTimeout(100); + if (vertical) { + await page.mouse.move(startX0, startY0 - 100); + } else { + await page.mouse.move(startX0 - 100, startY0); + } + await page.mouse.up(); + + await expect(page.getByTestId('resize-count')).toHaveText('1'); + + await expect(page.getByTestId('0')).toHaveText('100px'); + await expect(page.getByTestId('1')).toHaveText('300'); + await expect(page.getByTestId('2')).toHaveText('auto'); + await expect(page.getByTestId('3')).toHaveText('200px'); + + // move mouse to first separator, drag right/down by 100px (across bounding box), release + const box0b = await sep0.boundingBox(); + const startX0b = box0b.x + box0b.width / 2; + const startY0b = box0b.y + box0b.height / 2; + + await page.mouse.move(startX0b, startY0b); + await page.mouse.down(); + await page.waitForTimeout(100); + if (vertical) { + await page.mouse.move(startX0b, startY0b + 300); + } else { + await page.mouse.move(startX0b + 300, startY0b); + } + await page.mouse.up(); + + await expect(page.getByTestId('resize-count')).toHaveText('2'); + + await expect(page.getByTestId('0')).toHaveText('384px'); + await expect(page.getByTestId('1')).toHaveText('16'); + await expect(page.getByTestId('2')).toHaveText('auto'); + await expect(page.getByTestId('3')).toHaveText('200px'); + + // keyboard resize on third separator + const sep2 = page.locator('[role="separator"]').nth(2); + await sep2.click(); + await page.keyboard.press('ArrowDown'); + await page.keyboard.press('ArrowDown'); + await page.keyboard.press('ArrowDown'); + + await expect(page.getByTestId('resize-count')).toHaveText('3'); + + await expect(page.getByTestId('0')).toHaveText('384px'); + await expect(page.getByTestId('1')).toHaveText('16'); + await expect(page.getByTestId('2')).toHaveText('360px'); + await expect(page.getByTestId('3')).toHaveText('140px'); + }); + } +}); diff --git a/packages/main/src/components/SplitterLayout/test/SplitterLayoutTestComponents.tsx b/packages/main/src/components/SplitterLayout/test/SplitterLayoutTestComponents.tsx new file mode 100644 index 00000000000..d9a80f9a899 --- /dev/null +++ b/packages/main/src/components/SplitterLayout/test/SplitterLayoutTestComponents.tsx @@ -0,0 +1,135 @@ +import { useState } from 'react'; +import { Button } from '../../../webComponents/Button/index.js'; +import { Label } from '../../../webComponents/Label/index.js'; +import { Text } from '../../../webComponents/Text/index.js'; +import { FlexBox } from '../../FlexBox/index.js'; +import { SplitterElement } from '../../SplitterElement/index.js'; +import { SplitterLayout } from '../index.js'; +import type { SplitterLayoutPropTypes } from '../types.js'; + +export const SplitterMoveResetTestComp = ({ + vertical, + dir, +}: { + vertical: SplitterLayoutPropTypes['vertical']; + dir: string; +}) => { + const [mount, setMount] = useState(false); + const [dep, setDep] = useState(false); + return ( + + + + + + + + + + {mount && ( + + Additional Child + + )} + + ); +}; + +export const SplitterMultipleElementsTestComp = ({ + vertical, + onBtnClick, +}: { + vertical: boolean; + onBtnClick?: () => void; +}) => { + return ( + + + + + + + + + + + + ); +}; + +export const SplitterEmptyTestComp = () => { + return ; +}; + +export const SplitterControlledTestComp = ({ vertical }: { vertical: boolean }) => { + const [size0, setSize0] = useState('200px'); + const [size1, setSize1] = useState(200); + const [size2, setSize2] = useState('auto'); + const [size3, setSize3] = useState('200px'); + const [resizeCount, setResizeCount] = useState(0); + const setter = [setSize0, setSize1, setSize2, setSize3]; + return ( + <> + { + setResizeCount((c) => c + 1); + e.areas.forEach((item) => { + if (item.area.dataset.index === '1') { + setter[Number(item.area.dataset.index)](item.size); + } else { + // @ts-expect-error: supported + setter[Number(item.area.dataset.index)](item.size + 'px'); + } + }); + }} + > + + + Content 1 + + + + + {`Content 2 + with + multi + lines`} + + + + + + Content 3 with long text: Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod + tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et + justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor + sit amet. + + + + + + Content 4 + + + + {size0} +
+ {size1} +
+ {size2} +
+ {size3} +
+ {resizeCount} + + ); +}; diff --git a/playwright-ct.config.ts b/playwright-ct.config.ts index 124e92c18a8..9ff91defdca 100644 --- a/playwright-ct.config.ts +++ b/playwright-ct.config.ts @@ -22,7 +22,8 @@ export default defineConfig({ outputFile: 'temp/playwright-coverage/report.html', coverage: { sourceFilter: (sourcePath: string) => - sourcePath.includes('packages/main/src/components/SelectDialog') && + (sourcePath.includes('packages/main/src/components/SelectDialog') || + sourcePath.includes('packages/main/src/components/SplitterLayout')) && !sourcePath.includes('node_modules') && !sourcePath.includes('/test/'), reports: ['lcovonly'], From a852aa84009fd3abc60bd347a82f1265c0ac59f8 Mon Sep 17 00:00:00 2001 From: Lukas Harbarth Date: Mon, 16 Mar 2026 13:14:52 +0100 Subject: [PATCH 2/7] Update package.json --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 1241658bac3..b545f8787fc 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,7 @@ "test": "yarn test:prepare && cypress run --component --browser chrome --spec packages", "test:pw": "playwright test -c playwright-ct.config.ts", "test:pw:open": "playwright test -c playwright-ct.config.ts --ui", - "test:pw:ci": "playwright test -c playwright-ct.config.ts playwright/test/ packages/main/src/components/SelectDialog/test/ --project chromium", + "test:pw:ci": "playwright test -c playwright-ct.config.ts playwright/test/ packages/main/src/components/SelectDialog/test/ packages/main/src/components/SplitterLayout/test/ --project chromium", "clean": "tsc --build --clean && tsc --build tsconfig.build.json --clean && rimraf temp .out test-results playwright-report playwright-ct && lerna run clean", "clean:remove-modules": "yarn clean && rimraf node_modules", "prettier:all": "prettier --write --config ./prettier.config.js \"**/*\"", From 10b598fa2b222e23c8315cac3989bb11a582836c Mon Sep 17 00:00:00 2001 From: Lukas Harbarth Date: Mon, 16 Mar 2026 13:26:59 +0100 Subject: [PATCH 3/7] more comprehensive CI output --- playwright-ct.config.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/playwright-ct.config.ts b/playwright-ct.config.ts index 9ff91defdca..74801398567 100644 --- a/playwright-ct.config.ts +++ b/playwright-ct.config.ts @@ -14,6 +14,7 @@ export default defineConfig({ // https://github.com/microsoft/playwright/issues/14511#issuecomment-1552589959 reporter: process.env.CI ? [ + ['list'], ['github'], [ 'monocart-reporter', From 61a2c9792961e57182e59efd77777629739c6674 Mon Sep 17 00:00:00 2001 From: Lukas Harbarth Date: Mon, 16 Mar 2026 13:59:09 +0100 Subject: [PATCH 4/7] Update playwright-ct.config.ts --- playwright-ct.config.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/playwright-ct.config.ts b/playwright-ct.config.ts index 74801398567..35ddd9f819d 100644 --- a/playwright-ct.config.ts +++ b/playwright-ct.config.ts @@ -24,7 +24,7 @@ export default defineConfig({ coverage: { sourceFilter: (sourcePath: string) => (sourcePath.includes('packages/main/src/components/SelectDialog') || - sourcePath.includes('packages/main/src/components/SplitterLayout')) && + sourcePath.includes('packages/main/src/components/Splitter')) && !sourcePath.includes('node_modules') && !sourcePath.includes('/test/'), reports: ['lcovonly'], From ec81a00df20c2c487f4d1b48a729f2a110c77077 Mon Sep 17 00:00:00 2001 From: Lukas Harbarth Date: Mon, 16 Mar 2026 14:24:05 +0100 Subject: [PATCH 5/7] prevent flakiness --- .../components/SplitterLayout/test/SplitterLayout.spec.tsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/main/src/components/SplitterLayout/test/SplitterLayout.spec.tsx b/packages/main/src/components/SplitterLayout/test/SplitterLayout.spec.tsx index 914d3f30fed..6bc103a711e 100644 --- a/packages/main/src/components/SplitterLayout/test/SplitterLayout.spec.tsx +++ b/packages/main/src/components/SplitterLayout/test/SplitterLayout.spec.tsx @@ -168,10 +168,12 @@ test.describe('SplitterLayout', () => { const sep2 = page.locator('[role="separator"]').nth(2); await sep2.click(); await page.keyboard.press('ArrowDown'); + await expect(page.getByTestId('resize-count')).toHaveText('3'); await page.keyboard.press('ArrowDown'); + await expect(page.getByTestId('resize-count')).toHaveText('4'); await page.keyboard.press('ArrowDown'); - await expect(page.getByTestId('resize-count')).toHaveText('3'); + await expect(page.getByTestId('resize-count')).toHaveText('5'); await expect(page.getByTestId('0')).toHaveText('384px'); await expect(page.getByTestId('1')).toHaveText('16'); From 7b60b86708b1e6ccc23ffc27436c20f8ade92eae Mon Sep 17 00:00:00 2001 From: Lukas Harbarth Date: Mon, 16 Mar 2026 14:54:07 +0100 Subject: [PATCH 6/7] Update SplitterLayout.spec.tsx --- .../src/components/SplitterLayout/test/SplitterLayout.spec.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/main/src/components/SplitterLayout/test/SplitterLayout.spec.tsx b/packages/main/src/components/SplitterLayout/test/SplitterLayout.spec.tsx index 6bc103a711e..b8a29e124b6 100644 --- a/packages/main/src/components/SplitterLayout/test/SplitterLayout.spec.tsx +++ b/packages/main/src/components/SplitterLayout/test/SplitterLayout.spec.tsx @@ -1,4 +1,4 @@ -import { expect, test } from '@playwright/experimental-ct-react'; +import { expect, test } from '../../../../../../playwright/fixtures/main-fixtures.js'; import type { Page } from '@playwright/test'; import { SplitterMoveResetTestComp, From 7da1c02743d33d52a3f3e04295accd16ab4dd752 Mon Sep 17 00:00:00 2001 From: Lukas Harbarth Date: Tue, 17 Mar 2026 09:11:14 +0100 Subject: [PATCH 7/7] Update package.json --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index b545f8787fc..8fa680545c0 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,7 @@ "test": "yarn test:prepare && cypress run --component --browser chrome --spec packages", "test:pw": "playwright test -c playwright-ct.config.ts", "test:pw:open": "playwright test -c playwright-ct.config.ts --ui", - "test:pw:ci": "playwright test -c playwright-ct.config.ts playwright/test/ packages/main/src/components/SelectDialog/test/ packages/main/src/components/SplitterLayout/test/ --project chromium", + "test:pw:ci": "playwright test -c playwright-ct.config.ts --project chromium", "clean": "tsc --build --clean && tsc --build tsconfig.build.json --clean && rimraf temp .out test-results playwright-report playwright-ct && lerna run clean", "clean:remove-modules": "yarn clean && rimraf node_modules", "prettier:all": "prettier --write --config ./prettier.config.js \"**/*\"",