@@ -123,6 +123,12 @@ void stopTestEnvironment() {
123123 oryHydraContainer .stop ();
124124 }
125125
126+ // Every screenshot these tests capture is destined for the docs, so the viewport is pinned
127+ // rather than left at Playwright's default — a Playwright upgrade must not resize the images.
128+ private Page newPage () {
129+ return browser .newPage (new Browser .NewPageOptions ().setViewportSize (1280 , 720 ));
130+ }
131+
126132 @ BeforeEach
127133 public void registerTestClient () {
128134 // A unique client per test keeps tests isolated on the shared container: Hydra remembers
@@ -164,7 +170,7 @@ public void loginInvalidCredentials() {
164170 val screenshotPathProducer =
165171 ScreenshotPathProducer .builder ().testName ("loginInvalidCredentials" ).build ();
166172
167- val page = browser . newPage ();
173+ val page = newPage ();
168174 val initiateFlowUri = getUriToInitiateFlow ();
169175
170176 page .navigate (initiateFlowUri .toString ());
@@ -200,7 +206,7 @@ public void completeFullOAuthFlowUsingUIToLogin() {
200206 val screenshotPathProducer =
201207 ScreenshotPathProducer .builder ().testName ("completeFullOAuthFlowUsingUIToLogin" ).build ();
202208
203- val page = browser . newPage ();
209+ val page = newPage ();
204210
205211 val uri = getUriToInitiateFlow ();
206212
@@ -240,7 +246,7 @@ public void completeFlowWithPartialScopeSelection() {
240246 val screenshotPathProducer =
241247 ScreenshotPathProducer .builder ().testName ("completeFlowWithPartialScopeSelection" ).build ();
242248
243- val page = browser . newPage ();
249+ val page = newPage ();
244250
245251 val uri = getUriToInitiateFlow ();
246252
@@ -327,7 +333,7 @@ public void skipConsentScreenOnSecondLoginWhenRememberMeIsUsed() {
327333 ScreenshotPathProducer .builder ()
328334 .testName ("skipConsentScreenOnSecondLoginWhenRememberMeIsUsed" )
329335 .build ();
330- val page = browser . newPage ();
336+ val page = newPage ();
331337
332338 val uri = getUriToInitiateFlow ();
333339
@@ -390,7 +396,7 @@ public void doNotSkipConsentScreenOnSecondLoginWhenRememberMeIsFalse() {
390396 .testName ("doNotSkipConsentScreenOnSecondLoginWhenRememberMeIsFalse" )
391397 .build ();
392398
393- val page = browser . newPage ();
399+ val page = newPage ();
394400
395401 val uri = getUriToInitiateFlow ();
396402
@@ -443,7 +449,7 @@ public void denyConsentRedirectsToClientWithAccessDeniedError() {
443449 .testName ("denyConsentRedirectsToClientWithAccessDeniedError" )
444450 .build ();
445451
446- val page = browser . newPage ();
452+ val page = newPage ();
447453
448454 page .navigate (getUriToInitiateFlow ().toString ());
449455 page .screenshot (screenshotPathProducer .screenshotOptionsForStepName ("initial-load" ));
@@ -476,7 +482,7 @@ public void skipLoginScreenOnSecondFlowWhenLoginRememberMeIsUsed() {
476482 .testName ("skipLoginScreenOnSecondFlowWhenLoginRememberMeIsUsed" )
477483 .build ();
478484
479- val page = browser . newPage ();
485+ val page = newPage ();
480486
481487 page .navigate (getUriToInitiateFlow ().toString ());
482488 page .screenshot (screenshotPathProducer .screenshotOptionsForStepName ("initial-load" ));
@@ -520,7 +526,7 @@ public void logoutEndsTheRememberedLoginSession() {
520526 val screenshotPathProducer =
521527 ScreenshotPathProducer .builder ().testName ("logoutEndsTheRememberedLoginSession" ).build ();
522528
523- val page = browser . newPage ();
529+ val page = newPage ();
524530
525531 // First flow: log in with remember-me so a durable login session exists.
526532 completeFullFlowWithLoginRemember (page , screenshotPathProducer );
@@ -555,7 +561,7 @@ public void cancellingLogoutKeepsTheSessionAlive() {
555561 val screenshotPathProducer =
556562 ScreenshotPathProducer .builder ().testName ("cancellingLogoutKeepsTheSessionAlive" ).build ();
557563
558- val page = browser . newPage ();
564+ val page = newPage ();
559565
560566 completeFullFlowWithLoginRemember (page , screenshotPathProducer );
561567
@@ -595,7 +601,7 @@ public void quickStartFromLandingPageExchangesTokensInBrowser() {
595601 .responseTypes ("code" , "id_token" )
596602 .scope ("offline_access" , "openid" , "offline" , "profile" ));
597603
598- val page = browser . newPage ();
604+ val page = newPage ();
599605
600606 page .navigate ("http://localhost:" + springBootAppPort + "/" );
601607 page .screenshot (screenshotPathProducer .screenshotOptionsForStepName ("landing-page" ));
0 commit comments