-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Test(e2e): Create test for opened Modal components
- solves DS-1247
- Loading branch information
1 parent
f0d30cf
commit 807b3a3
Showing
16 changed files
with
143 additions
and
29 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
2 changes: 1 addition & 1 deletion
2
packages/web-twig/src/Resources/components/Modal/stories/ModalHiddenCloseButton.twig
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
2 changes: 1 addition & 1 deletion
2
packages/web-twig/src/Resources/components/Modal/stories/ModalStacking.twig
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Binary file modified
BIN
-33.1 KB
(89%)
...s/e2e/demo-components-compare.spec.ts-snapshots/fileuploader-chromium-linux.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified
BIN
-622 Bytes
(99%)
tests/e2e/demo-homepages.spec.ts-snapshots/web-chromium-linux.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified
BIN
-4.39 KB
(95%)
tests/e2e/demo-homepages.spec.ts-snapshots/web-react-chromium-linux.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,100 @@ | ||
/* eslint-disable no-console -- we want to log when test fails */ | ||
import { isTesting as isTestingEnvironment } from '@lmc-eu/spirit-common/constants/environments'; | ||
import { SERVERS, getDevelopmentEndpointUri } from '@lmc-eu/spirit-common/constants/servers'; | ||
import { expect, test } from '@playwright/test'; | ||
|
||
const runComponentCompareTests = ({ componentsDir, packageName, componentName }) => { | ||
if (!packageName) return; | ||
|
||
const formattedPackageName = packageName | ||
.split('-') | ||
.map((word) => word.charAt(0).toUpperCase() + word.slice(1)) | ||
.join(' '); | ||
|
||
test.describe(`Demo ${formattedPackageName} Components`, () => { | ||
test(`test demo ${formattedPackageName} component ${componentName}`, async ({ page }) => { | ||
try { | ||
const url = isTestingEnvironment() | ||
? SERVERS.TESTING[packageName] | ||
: getDevelopmentEndpointUri(packageName, { isDocker: packageName !== 'web-twig' }); | ||
|
||
await page.goto(`${url}${componentsDir}/${componentName}/${packageName === 'web-twig' ? '?HIDE_TOOLBAR' : ''}`); | ||
await waitForPageLoad(page); | ||
|
||
await runModalTests(page, componentName); | ||
} catch (error) { | ||
console.error(`Test for demo ${formattedPackageName} component ${componentName} failed. ${error}`); | ||
throw error; | ||
} | ||
}); | ||
}); | ||
}; | ||
|
||
const waitForPageLoad = async (page) => { | ||
// Wait for fonts to load | ||
await page.evaluate(() => document.fonts.ready); | ||
|
||
// Wait for images to load | ||
await page.waitForFunction(() => Array.from(document.querySelectorAll('img')).every((img) => img.complete)); | ||
|
||
// Wait for transitions to finish | ||
await page.waitForLoadState(); | ||
|
||
// Disable animations to avoid flaky screenshots | ||
await page.addStyleTag({ content: '*, *::before, *::after { animation-iteration-count: 1 !important }' }); | ||
}; | ||
|
||
const runModalTests = async (page, componentName) => { | ||
// Helper function for taking and comparing screenshots | ||
const takeScreenshot = async (suffix, fullPage = false) => { | ||
await expect(page).toHaveScreenshot(`${componentName.toLowerCase()}-${suffix}.png`, { | ||
animations: 'disabled', | ||
fullPage, | ||
}); | ||
}; | ||
|
||
// TEST: open basic modal, close with backdrop click | ||
await page.click('[data-test-id="basic-modal"]'); | ||
await takeScreenshot('basic'); | ||
await page.locator('body').click({ position: { x: 0, y: 0 } }); | ||
|
||
// TEST: open modal and dropdown inside, close with close button | ||
await page.click('[data-test-id="modal-with-dropdown"]'); | ||
await page.click('dialog[open] .Dropdown button'); | ||
await takeScreenshot('with-dropdown'); | ||
await page.click('dialog[open] .ModalHeader button'); | ||
|
||
// TEST: open stacking modals, close with escape key | ||
await page.click('[data-test-id="modal-stacking"]'); | ||
await page.click('dialog[open] .ModalFooter button'); | ||
await takeScreenshot('stacking'); | ||
await page.keyboard.press('Escape'); | ||
await page.keyboard.press('Escape'); | ||
|
||
// TEST: open modal with hidden close button, close with action button | ||
await page.click('button[data-test-id="hidden-close-button"]'); | ||
await takeScreenshot('hidden-close-button'); | ||
await page.click('dialog[open] .ModalFooter button'); | ||
await takeScreenshot('closed-modals', true); | ||
}; | ||
|
||
const testConfigs = [ | ||
{ | ||
componentName: 'Modal', | ||
componentsDir: '/src/scss/components', | ||
packageName: 'web', | ||
}, | ||
{ | ||
componentName: 'Modal', | ||
componentsDir: '/src/components', | ||
packageName: 'web-react', | ||
}, | ||
// Disable web-twig tests for now on CI, because we don't have a way to run them in CI yet. | ||
!isTestingEnvironment() && { | ||
componentName: 'Modal', | ||
componentsDir: '/components', | ||
packageName: 'web-twig', | ||
}, | ||
].filter(Boolean); | ||
|
||
testConfigs.forEach(runComponentCompareTests); |
Binary file added
BIN
+112 KB
tests/e2e/demo-modal-compare.spec.ts-snapshots/modal-basic-chromium-linux.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+60.2 KB
...e2e/demo-modal-compare.spec.ts-snapshots/modal-closed-modals-chromium-linux.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+90.3 KB
...mo-modal-compare.spec.ts-snapshots/modal-hidden-close-button-chromium-linux.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+141 KB
tests/e2e/demo-modal-compare.spec.ts-snapshots/modal-stacking-chromium-linux.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+98.7 KB
...e2e/demo-modal-compare.spec.ts-snapshots/modal-with-dropdown-chromium-linux.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.