11const { expect } = require ( '@playwright/test' ) ;
2- const { log, args, createPage, closePage, takeScreenshot, waitForServerReady, dismissDevmode, execCommand } = require ( './test-utils' ) ;
2+ const { log, args, createPage, closePage, takeScreenshot, waitForServerReady, dismissDevmode, execCommand, compileAndReload } = require ( './test-utils' ) ;
33// When using playwright in lib mode we cannot use expect, thus we use regular asserts
44const assert = require ( 'assert' ) ;
55
@@ -8,70 +8,17 @@ const fs = require('fs');
88const Net = require ( 'net' ) ;
99const isWin = / ^ w i n / . test ( process . platform ) ;
1010
11- let buildCmd , buildArgs ;
12- if ( fs . existsSync ( 'mvnw' ) ) {
13- if ( isWin ) {
14- buildCmd = fs . existsSync ( 'mvnw.bat' ) ? 'mvnw.bat' : 'mvnw.cmd' ;
15- } else {
16- buildCmd = './mvnw' ;
17- }
18- buildArgs = 'compiler:compile' ;
19- } else if ( fs . existsSync ( 'gradlew' ) ) {
20- if ( isWin ) {
21- buildCmd = fs . existsSync ( 'gradlew.bat' ) ? 'gradlew.bat' : 'gradlew.cmd' ;
22- } else {
23- buildCmd = './gradlew' ;
24- }
25- buildArgs = 'compileJava' ;
26- } else {
27- throw new Error ( 'No build tool found' ) ;
28- }
29-
30- const compileProject = async ( ) => await execCommand ( `${ buildCmd } ${ buildArgs } ` ) ;
31-
32- async function isPortTaken ( port ) {
33- return new Promise ( ( resolve , reject ) => {
34- const tester = Net . createServer ( )
35- . once ( 'error' , err => resolve ( true ) )
36- . once ( 'listening' , ( ) => {
37- log ( `Port ${ port } not listening` ) ;
38- tester . close ( ) ;
39- resolve ( false ) ;
40- } )
41- . listen ( port )
42- } ) ;
43- }
44-
45- async function reload ( page , url ) {
46- log ( `reloading page` ) ;
47- let i = 0 ;
48- while ( i ++ < 30 && ! await isPortTaken ( url . split ( ':' ) [ 2 ] . split ( '/' ) [ 0 ] ) ) {
49- await page . waitForTimeout ( 2000 ) ;
50- }
51- await page . reload ( ) ;
52- await page . waitForURL ( url ) ;
53- log ( `page reloaded` ) ;
54- await takeScreenshot ( page , 'initializer.js' , 'view-reloaded' ) ;
55- }
56-
57- async function compile ( page , url ) {
58- log ( 'Re-compiling project' ) ;
59- await compileProject ( ) ;
60- await page . waitForTimeout ( 10000 ) ;
61- await reload ( page , url )
62- }
63-
6411( async ( ) => {
6512 const arg = args ( ) ;
6613
6714 const page = await createPage ( arg . headless , arg . ignoreHTTPSErrors ) ;
6815 page . setViewportSize ( { width : 811 , height : 1224 } ) ;
6916
7017 await waitForServerReady ( page , arg . url ) ;
71-
18+
7219 // Dismiss dev mode notification if present
7320 await dismissDevmode ( page ) ;
74-
21+
7522 await page . waitForTimeout ( 3000 ) ;
7623 await takeScreenshot ( page , __filename , 'view-loaded' ) ;
7724
@@ -89,12 +36,14 @@ async function compile(page, url) {
8936 await page . getByRole ( 'link' , { name : linkText } ) . click ( ) ;
9037 await page . waitForTimeout ( 2000 ) ;
9138 await takeScreenshot ( page , __filename , 'view-created' ) ;
92- await reload ( page , arg . url ) ;
39+ await waitForServerReady ( page , arg . url , { maxRetries : 30 , retryInterval : 2000 } ) ;
9340 const view = ( await execCommand ( `find src/main/frontend src/main/java -name '${ viewName } '` ) ) . stdout . trim ( ) ;
9441 assert . ok ( fs . existsSync ( view ) ) ;
9542
9643 // Compile the application so as spring-devtools watches the changes
97- await compile ( page , arg . url ) ;
44+ await compileAndReload ( page , arg . url , { waitTime : 10000 } ) ;
45+ // Additional reload to ensure server is ready after compilation
46+ await waitForServerReady ( page , arg . url , { maxRetries : 30 , retryInterval : 2000 } ) ;
9847
9948 await takeScreenshot ( page , __filename , 'app-compiled' ) ;
10049
@@ -112,7 +61,7 @@ async function compile(page, url) {
11261 }
11362
11463 log ( `checking if the new view is available` ) ;
115- await reload ( page , arg . url ) ;
64+ await waitForServerReady ( page , arg . url , { maxRetries : 30 , retryInterval : 2000 } ) ;
11665 await page . waitForTimeout ( 2000 ) ;
11766 await takeScreenshot ( page , __filename , 'view-reloaded-after-compiling' ) ;
11867
0 commit comments