[xwiki/xwiki-platform] 7095d7: XWIKI-25235: Add support for visual regression tes...
Branch: refs/heads/master Home: https://github.com/xwiki/xwiki-platform Commit: 7095d71347cd3835396556af3cb2a3f359e6e9ea https://github.com/xwiki/xwiki-platform/commit/7095d71347cd3835396556af3cb2a... Author: Nicoleta Ciaușu <[email protected]> Date: 2026-10-13 (Tue, 13 Oct 2026) Changed paths: M xwiki-platform-core/xwiki-platform-blocknote/xwiki-platform-blocknote-test/xwiki-platform-blocknote-test-docker/pom.xml R xwiki-platform-core/xwiki-platform-blocknote/xwiki-platform-blocknote-test/xwiki-platform-blocknote-test-docker/src/test/it/org/xwiki/blocknote/test/ui/ScreenshotComparator.java R xwiki-platform-core/xwiki-platform-blocknote/xwiki-platform-blocknote-test/xwiki-platform-blocknote-test-docker/src/test/it/org/xwiki/blocknote/test/ui/ScreenshotComparatorParameterResolver.java M xwiki-platform-core/xwiki-platform-blocknote/xwiki-platform-blocknote-test/xwiki-platform-blocknote-test-docker/src/test/it/org/xwiki/blocknote/test/ui/SideMenuIT.java R xwiki-platform-core/xwiki-platform-blocknote/xwiki-platform-blocknote-test/xwiki-platform-blocknote-test-docker/src/test/resources/screenshots/SideMenuIT/sideMenuIsAlignedOnCaptionedImage/chrome/captionedImage.png M xwiki-platform-core/xwiki-platform-blocknote/xwiki-platform-blocknote-test/xwiki-platform-blocknote-test-docker/src/test/resources/screenshots/SideMenuIT/sideMenuIsAlignedOnCaptionedImage/firefox/captionedImage.png R xwiki-platform-core/xwiki-platform-blocknote/xwiki-platform-blocknote-test/xwiki-platform-blocknote-test-docker/src/test/resources/screenshots/SideMenuIT/sideMenuIsAlignedOnImage/chrome/image.png M xwiki-platform-core/xwiki-platform-blocknote/xwiki-platform-blocknote-test/xwiki-platform-blocknote-test-docker/src/test/resources/screenshots/SideMenuIT/sideMenuIsAlignedOnImage/firefox/image.png R xwiki-platform-core/xwiki-platform-blocknote/xwiki-platform-blocknote-test/xwiki-platform-blocknote-test-docker/src/test/resources/screenshots/SideMenuIT/sideMenuIsAlignedOnImageBeforeText/chrome/imageBeforeText.png M xwiki-platform-core/xwiki-platform-blocknote/xwiki-platform-blocknote-test/xwiki-platform-blocknote-test-docker/src/test/resources/screenshots/SideMenuIT/sideMenuIsAlignedOnImageBeforeText/firefox/imageBeforeText.png R xwiki-platform-core/xwiki-platform-blocknote/xwiki-platform-blocknote-test/xwiki-platform-blocknote-test-docker/src/test/resources/screenshots/SideMenuIT/sideMenuIsAlignedOnInfoBox/chrome/infoBox.png M xwiki-platform-core/xwiki-platform-blocknote/xwiki-platform-blocknote-test/xwiki-platform-blocknote-test-docker/src/test/resources/screenshots/SideMenuIT/sideMenuIsAlignedOnInfoBox/firefox/infoBox.png R xwiki-platform-core/xwiki-platform-blocknote/xwiki-platform-blocknote-test/xwiki-platform-blocknote-test-docker/src/test/resources/screenshots/SideMenuIT/sideMenuIsAlignedOnLargeHeadings/chrome/heading1.png R xwiki-platform-core/xwiki-platform-blocknote/xwiki-platform-blocknote-test/xwiki-platform-blocknote-test-docker/src/test/resources/screenshots/SideMenuIT/sideMenuIsAlignedOnLargeHeadings/chrome/heading2.png R xwiki-platform-core/xwiki-platform-blocknote/xwiki-platform-blocknote-test/xwiki-platform-blocknote-test-docker/src/test/resources/screenshots/SideMenuIT/sideMenuIsAlignedOnLargeHeadings/chrome/heading3.png M xwiki-platform-core/xwiki-platform-blocknote/xwiki-platform-blocknote-test/xwiki-platform-blocknote-test-docker/src/test/resources/screenshots/SideMenuIT/sideMenuIsAlignedOnLargeHeadings/firefox/heading1.png M xwiki-platform-core/xwiki-platform-blocknote/xwiki-platform-blocknote-test/xwiki-platform-blocknote-test-docker/src/test/resources/screenshots/SideMenuIT/sideMenuIsAlignedOnLargeHeadings/firefox/heading2.png M xwiki-platform-core/xwiki-platform-blocknote/xwiki-platform-blocknote-test/xwiki-platform-blocknote-test-docker/src/test/resources/screenshots/SideMenuIT/sideMenuIsAlignedOnLargeHeadings/firefox/heading3.png R xwiki-platform-core/xwiki-platform-blocknote/xwiki-platform-blocknote-test/xwiki-platform-blocknote-test-docker/src/test/resources/screenshots/SideMenuIT/sideMenuIsAlignedOnOtherBlockTypes/chrome/bulletItem.png R xwiki-platform-core/xwiki-platform-blocknote/xwiki-platform-blocknote-test/xwiki-platform-blocknote-test-docker/src/test/resources/screenshots/SideMenuIT/sideMenuIsAlignedOnOtherBlockTypes/chrome/divider.png R xwiki-platform-core/xwiki-platform-blocknote/xwiki-platform-blocknote-test/xwiki-platform-blocknote-test-docker/src/test/resources/screenshots/SideMenuIT/sideMenuIsAlignedOnOtherBlockTypes/chrome/paragraph.png R xwiki-platform-core/xwiki-platform-blocknote/xwiki-platform-blocknote-test/xwiki-platform-blocknote-test-docker/src/test/resources/screenshots/SideMenuIT/sideMenuIsAlignedOnOtherBlockTypes/chrome/quote.png R xwiki-platform-core/xwiki-platform-blocknote/xwiki-platform-blocknote-test/xwiki-platform-blocknote-test-docker/src/test/resources/screenshots/SideMenuIT/sideMenuIsAlignedOnOtherBlockTypes/chrome/wrappingParagraph.png M xwiki-platform-core/xwiki-platform-blocknote/xwiki-platform-blocknote-test/xwiki-platform-blocknote-test-docker/src/test/resources/screenshots/SideMenuIT/sideMenuIsAlignedOnOtherBlockTypes/firefox/bulletItem.png M xwiki-platform-core/xwiki-platform-blocknote/xwiki-platform-blocknote-test/xwiki-platform-blocknote-test-docker/src/test/resources/screenshots/SideMenuIT/sideMenuIsAlignedOnOtherBlockTypes/firefox/divider.png M xwiki-platform-core/xwiki-platform-blocknote/xwiki-platform-blocknote-test/xwiki-platform-blocknote-test-docker/src/test/resources/screenshots/SideMenuIT/sideMenuIsAlignedOnOtherBlockTypes/firefox/paragraph.png M xwiki-platform-core/xwiki-platform-blocknote/xwiki-platform-blocknote-test/xwiki-platform-blocknote-test-docker/src/test/resources/screenshots/SideMenuIT/sideMenuIsAlignedOnOtherBlockTypes/firefox/quote.png M xwiki-platform-core/xwiki-platform-blocknote/xwiki-platform-blocknote-test/xwiki-platform-blocknote-test-docker/src/test/resources/screenshots/SideMenuIT/sideMenuIsAlignedOnOtherBlockTypes/firefox/wrappingParagraph.png R xwiki-platform-core/xwiki-platform-blocknote/xwiki-platform-blocknote-test/xwiki-platform-blocknote-test-docker/src/test/resources/screenshots/SideMenuIT/sideMenuIsAlignedOnSmallHeadings/chrome/heading4.png R xwiki-platform-core/xwiki-platform-blocknote/xwiki-platform-blocknote-test/xwiki-platform-blocknote-test-docker/src/test/resources/screenshots/SideMenuIT/sideMenuIsAlignedOnSmallHeadings/chrome/heading5.png R xwiki-platform-core/xwiki-platform-blocknote/xwiki-platform-blocknote-test/xwiki-platform-blocknote-test-docker/src/test/resources/screenshots/SideMenuIT/sideMenuIsAlignedOnSmallHeadings/chrome/heading6.png M xwiki-platform-core/xwiki-platform-blocknote/xwiki-platform-blocknote-test/xwiki-platform-blocknote-test-docker/src/test/resources/screenshots/SideMenuIT/sideMenuIsAlignedOnSmallHeadings/firefox/heading4.png M xwiki-platform-core/xwiki-platform-blocknote/xwiki-platform-blocknote-test/xwiki-platform-blocknote-test-docker/src/test/resources/screenshots/SideMenuIT/sideMenuIsAlignedOnSmallHeadings/firefox/heading5.png M xwiki-platform-core/xwiki-platform-blocknote/xwiki-platform-blocknote-test/xwiki-platform-blocknote-test-docker/src/test/resources/screenshots/SideMenuIT/sideMenuIsAlignedOnSmallHeadings/firefox/heading6.png M xwiki-platform-core/xwiki-platform-blocknote/xwiki-platform-blocknote-test/xwiki-platform-blocknote-test-pageobjects/src/main/java/org/xwiki/blocknote/test/po/BlockNoteRichTextArea.java M xwiki-platform-core/xwiki-platform-test/xwiki-platform-test-docker/pom.xml A xwiki-platform-core/xwiki-platform-test/xwiki-platform-test-docker/src/main/java/org/xwiki/test/docker/internal/junit5/ScreenshotComparatorParameterResolver.java M xwiki-platform-core/xwiki-platform-test/xwiki-platform-test-docker/src/main/java/org/xwiki/test/docker/internal/junit5/UITestTestConfigurationResolver.java M xwiki-platform-core/xwiki-platform-test/xwiki-platform-test-docker/src/main/java/org/xwiki/test/docker/internal/junit5/browser/BrowserContainerExecutor.java A xwiki-platform-core/xwiki-platform-test/xwiki-platform-test-docker/src/main/java/org/xwiki/test/docker/junit5/ScreenshotComparator.java M xwiki-platform-core/xwiki-platform-test/xwiki-platform-test-docker/src/main/java/org/xwiki/test/docker/junit5/TestConfiguration.java M xwiki-platform-core/xwiki-platform-test/xwiki-platform-test-docker/src/main/java/org/xwiki/test/docker/junit5/UITest.java M xwiki-platform-core/xwiki-platform-test/xwiki-platform-test-docker/src/test/java/org/xwiki/test/docker/internal/junit5/TestConfigurationTest.java Log Message: ----------- XWIKI-25235: Add support for visual regression testing in the Docker-based test framework (#6702) * Move ScreenshotComparator and its parameter resolver from the BlockNote functional tests to xwiki-platform-test-docker, and register the resolver in @UITest, so that any Selenium test can compare screenshots with reference images committed in its test resources by only declaring the parameter * Take the screenshot of an element by cropping a screenshot of the page to the bounding rectangle of that element, extended by a margin the caller specifies, rather than by screenshotting the element itself, which can't capture the user interface floating outside of it. The smaller the captured area, the fewer unrelated changes can break the comparison * Rename assertScreenshotMatches to assertMatches * Keep the reference screenshots of a single browser, Firefox, and skip the comparison, and only the comparison, when the tests run with another one, since maintaining a set of references per browser doubles the maintenance. The Chrome references can't be regenerated at all on arm64, where the framework substitutes selenium/standalone-chromium, whose image doesn't ship fonts-liberation and therefore renders text differently * Overwrite the reference screenshots with the ones taken by the tests when -Dxwiki.test.ui.screenshots.update=true is passed, since copying them by hand gets painful as soon as a change affects more than a couple of them * Let @UITest configure the size of the screen of the browser container, with screenWidth and screenHeight. A taller screen means a taller viewport and thus fewer tests that have to scroll, which is what makes a screenshot unstable when the test hovers an element before taking it. Tests that are merged together share a single browser container, so the largest screen asked for wins * Document the limitations of ScreenshotComparator (the element is not scrolled into view, iframes are not supported) * Rename BlockNoteRichTextArea#getBlockContent() to #getBlock() * Compare a screenshot of the hovered block and of its side menu in SideMenuIT, rather than a screenshot of the whole content area, and regenerate its Firefox reference screenshots accordingly Co-authored-by: Claude Opus 5 <[email protected]> To unsubscribe from these emails, change your notification settings at https://github.com/xwiki/xwiki-platform/settings/notifications
participants (1)
-
XWiki Notifications