|
1 | | -const { log, args, createPage, closePage, takeScreenshot, waitForServerReady, dismissDevmode } = require('./test-utils'); |
| 1 | +const { chromium } = require('playwright'); |
| 2 | + |
| 3 | + |
| 4 | +let headless = false, host = 'localhost', port = '8080', mode = 'prod'; |
| 5 | +process.argv.forEach(a => { |
| 6 | + if (/^--headless/.test(a)) { |
| 7 | + headless = true; |
| 8 | + } else if (/^--port=/.test(a)) { |
| 9 | + port = a.split('=')[1]; |
| 10 | + } else if (/^--mode=/.test(a)) { |
| 11 | + mode = a.split('=')[1]; |
| 12 | + } |
| 13 | +}); |
2 | 14 |
|
3 | 15 | (async () => { |
4 | | - const arg = args(); |
| 16 | + const browser = await chromium.launch({ |
| 17 | + headless: headless, |
| 18 | + chromiumSandbox: false |
| 19 | + }); |
| 20 | + const log = s => process.stderr.write(` ${s}`); |
5 | 21 |
|
6 | | - const page = await createPage(arg.headless); |
7 | | - page.setViewportSize({width: 811, height: 1224}); |
| 22 | + const context = await browser.newContext(); |
| 23 | + // context.setDefaultTimeout(90000); |
| 24 | + // context.setDefaultNavigationTimeout(90000) |
8 | 25 |
|
9 | | - await waitForServerReady(page, arg.url); |
10 | | - await takeScreenshot(page, __filename, 'wizard-loaded'); |
| 26 | + const page = await context.newPage(); |
| 27 | + page.setViewportSize({width: 811, height: 1224}); |
11 | 28 |
|
12 | | - // Start a new project |
13 | | - log(`Starting new project`); |
14 | | - await page.getByText(/Start (a Project|Playing)/).click(); |
15 | | - await page.keyboard.press('Escape'); |
16 | | - await takeScreenshot(page, __filename, 'project-started'); |
| 29 | + page.on('console', msg => console.log("> CONSOLE:", (msg.text() + ' - ' + msg.location().url).replace(/\s+/g, ' '))); |
| 30 | + page.on('pageerror', err => console.log("> PAGEERROR:", ('' + err).replace(/\s+/g, ' '))); |
| 31 | + |
| 32 | + await page.goto(`http://${host}:${port}/`); |
| 33 | + |
| 34 | + // Start a new project |
| 35 | + log(`Starting new project\n`); |
| 36 | + await page.getByText(/Start (a Project|Playing)/).click(); |
| 37 | + await page.keyboard.press('Escape'); |
17 | 38 |
|
18 | 39 | // No demo view anymore |
19 | 40 | // Test example views |
@@ -70,7 +91,7 @@ const { log, args, createPage, closePage, takeScreenshot, waitForServerReady, di |
70 | 91 | log(`let's see if fails ....`) |
71 | 92 | } |
72 | 93 | } |
73 | | - |
| 94 | + |
74 | 95 | await page.waitForTimeout(1000); |
75 | 96 | log(`Created view ${label}\n`); |
76 | 97 | } |
@@ -109,21 +130,20 @@ const { log, args, createPage, closePage, takeScreenshot, waitForServerReady, di |
109 | 130 | log(`Clicked code button\n`); |
110 | 131 |
|
111 | 132 | // Download the App and save in current folder |
112 | | - const fname = `my-app-${arg.mode || 'dev'}.zip` |
113 | | - if ((arg.mode || 'dev') == 'dev' && process.env.RUNNER_OS != 'Windows') { |
| 133 | + const fname = `my-app-${mode}.zip` |
| 134 | + if (mode == 'dev' && process.env.RUNNER_OS != 'Windows') { |
114 | 135 | log(`Downloading project\n`); |
115 | 136 | await page.getByRole('button', { name: 'Download Project' }).click(); |
116 | 137 | const downloadPromise = page.waitForEvent('download'); |
117 | 138 | await page.getByRole('button', { name: 'Download', exact: true }).click(); |
118 | 139 | const download = await downloadPromise; |
119 | 140 | await download.saveAs(fname); |
120 | | - log(`Downloaded file ${fname}`); |
| 141 | + log(`Downloaded file ${fname}\n`); |
121 | 142 | await page.getByLabel('Close download dialog').click(); |
122 | | - await takeScreenshot(page, __filename, 'download-completed'); |
123 | 143 | } else { |
124 | | - log(`Skipped download of file ${fname} in Windows`); |
| 144 | + log(`Skipped download of file ${fname} in Windows\n`); |
125 | 145 | } |
126 | 146 |
|
127 | | - log('Wizard testing completed successfully'); |
128 | | - await closePage(page); |
| 147 | + await context.close(); |
| 148 | + await browser.close(); |
129 | 149 | })(); |
0 commit comments