@digigov/cli-app 1.0.0-8ae63a77 → 1.0.0-8b33e4c8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.rush/temp/shrinkwrap-deps.json +9 -9
- package/index.js +17 -10
- package/lib/test/init.js +59 -19
- package/package.json +4 -4
|
@@ -125,7 +125,7 @@
|
|
|
125
125
|
"bytes@3.1.0": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==",
|
|
126
126
|
"camelcase-css@2.0.1": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==",
|
|
127
127
|
"caniuse-lite@1.0.30001375": "sha512-kWIMkNzLYxSvnjy0hL8w1NOaWNr2rn39RTAVyIwcw8juu60bZDWiF1/loOYANzjtJmy6qPgNmn38ro5Pygagdw==",
|
|
128
|
-
"caniuse-lite@1.0.
|
|
128
|
+
"caniuse-lite@1.0.30001562": "sha512-kfte3Hym//51EdX4239i+Rmp20EsLIYGdPkERegTgU19hQWCRhsRFGKHTliUlsry53tv17K7n077Kqa0WJU4ng==",
|
|
129
129
|
"chalk@2.4.2": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
|
|
130
130
|
"chalk@4.0.0": "sha512-N9oWFcegS0sFr9oh1oz2d7Npos6vNoWW9HvtCg5N1KRFpUhaAhvTv5Y58g880fZaEYSNm3qDz8SU1UrGvp+n7A==",
|
|
131
131
|
"chalk@4.1.2": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
|
|
@@ -178,7 +178,7 @@
|
|
|
178
178
|
"domain-browser@1.2.0": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==",
|
|
179
179
|
"ee-first@1.1.1": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==",
|
|
180
180
|
"electron-to-chromium@1.4.215": "sha512-vqZxT8C5mlDZ//hQFhneHmOLnj1LhbzxV0+I1yqHV8SB1Oo4Y5Ne9+qQhwHl7O1s9s9cRuo2l5CoLEHdhMTwZg==",
|
|
181
|
-
"electron-to-chromium@1.4.
|
|
181
|
+
"electron-to-chromium@1.4.582": "sha512-89o0MGoocwYbzqUUjc+VNpeOFSOK9nIdC5wY4N+PVUarUK0MtjyTjks75AZS2bW4Kl8MdewdFsWaH0jLy+JNoA==",
|
|
182
182
|
"elliptic@6.5.4": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==",
|
|
183
183
|
"emoji-regex@8.0.0": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
|
|
184
184
|
"emojis-list@2.1.0": "sha512-knHEZMgs8BB+MInokmNTg/OyPlAddghe1YBgNwJBc5zsJi/uyIcXoSDsL/W9ymOsBoBGdPIHXYJ9+qKFwRwDng==",
|
|
@@ -204,7 +204,7 @@
|
|
|
204
204
|
"express@4.17.1": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==",
|
|
205
205
|
"fast-deep-equal@3.1.3": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
|
|
206
206
|
"fast-glob@3.2.11": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==",
|
|
207
|
-
"fast-glob@3.3.
|
|
207
|
+
"fast-glob@3.3.2": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==",
|
|
208
208
|
"fast-json-stable-stringify@2.1.0": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
|
|
209
209
|
"fastq@1.13.0": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==",
|
|
210
210
|
"file-loader@5.1.0_webpack@5.74.0": "sha512-u/VkLGskw3Ue59nyOwUwXI/6nuBCo7KBkniB/l7ICwr/7cPNGsL1WCXUp3GB0qgOOKU1TiP49bv4DZF/LJqprg==",
|
|
@@ -222,7 +222,7 @@
|
|
|
222
222
|
"fs-extra@8.1.0": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
|
|
223
223
|
"fs.realpath@1.0.0": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
|
|
224
224
|
"fsevents@2.3.2": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
|
|
225
|
-
"function-bind@1.1.
|
|
225
|
+
"function-bind@1.1.2": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
|
|
226
226
|
"gensync@1.0.0-beta.2": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
|
|
227
227
|
"get-caller-file@2.0.5": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
|
|
228
228
|
"get-orientation@1.1.2": "sha512-/pViTfifW+gBbh/RnlFYHINvELT9Znt+SYyDKAUL6uV6By019AK/s+i9XP4jSwq7lwP38Fd8HVeTxym3+hkwmQ==",
|
|
@@ -238,9 +238,9 @@
|
|
|
238
238
|
"graceful-fs@4.2.10": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==",
|
|
239
239
|
"has-flag@3.0.0": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
|
|
240
240
|
"has-flag@4.0.0": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
|
|
241
|
-
"has@1.0.3": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
|
|
242
241
|
"hash-base@3.1.0": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==",
|
|
243
242
|
"hash.js@1.1.7": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==",
|
|
243
|
+
"hasown@2.0.0": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==",
|
|
244
244
|
"he@1.2.0": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
|
|
245
245
|
"hmac-drbg@1.0.1": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==",
|
|
246
246
|
"http-errors@1.7.2": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==",
|
|
@@ -260,7 +260,7 @@
|
|
|
260
260
|
"inherits@2.0.4": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
|
|
261
261
|
"ipaddr.js@1.9.1": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
|
|
262
262
|
"is-binary-path@2.1.0": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
|
|
263
|
-
"is-core-module@2.13.
|
|
263
|
+
"is-core-module@2.13.1": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==",
|
|
264
264
|
"is-docker@2.2.1": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==",
|
|
265
265
|
"is-extglob@2.1.1": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
|
|
266
266
|
"is-fullwidth-code-point@3.0.0": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
|
|
@@ -273,7 +273,7 @@
|
|
|
273
273
|
"isobject@2.1.0": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==",
|
|
274
274
|
"jest-worker@24.9.0": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==",
|
|
275
275
|
"jest-worker@27.5.1": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==",
|
|
276
|
-
"jiti@1.
|
|
276
|
+
"jiti@1.21.0": "sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==",
|
|
277
277
|
"js-tokens@4.0.0": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
|
|
278
278
|
"jsesc@2.5.2": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
|
|
279
279
|
"json-parse-even-better-errors@2.3.1": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
|
|
@@ -321,7 +321,7 @@
|
|
|
321
321
|
"ms@2.1.2": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
|
|
322
322
|
"mz@2.7.0": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==",
|
|
323
323
|
"nanoid@3.3.4": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==",
|
|
324
|
-
"nanoid@3.3.
|
|
324
|
+
"nanoid@3.3.7": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==",
|
|
325
325
|
"native-url@0.3.4": "sha512-6iM8R99ze45ivyH8vybJ7X0yekIcPf5GgLV5K0ENCbmRcaRIDoj37BC8iLEmaaBfqqb8enuZ5p0uhY+lVAbAcA==",
|
|
326
326
|
"negotiator@0.6.3": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
|
|
327
327
|
"neo-async@2.6.2": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
|
|
@@ -518,7 +518,7 @@
|
|
|
518
518
|
"xtend@4.0.2": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
|
|
519
519
|
"y18n@5.0.8": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
|
|
520
520
|
"yallist@4.0.0": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
|
|
521
|
-
"yaml@2.3.
|
|
521
|
+
"yaml@2.3.4": "sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==",
|
|
522
522
|
"yargs-parser@21.1.1": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
|
|
523
523
|
"yargs@17.7.2": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
|
|
524
524
|
"yn@3.1.1": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==",
|
package/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
const {flags} = require('@oclif/command')
|
|
1
|
+
const { flags } = require('@oclif/command')
|
|
2
2
|
const execa = require('execa')
|
|
3
3
|
const fs = require('fs')
|
|
4
|
-
const {resolveProject, makeConfig, DigigovCommand} = require('@digigov/cli/lib')
|
|
4
|
+
const { resolveProject, makeConfig, DigigovCommand } = require('@digigov/cli/lib')
|
|
5
5
|
const path = require('path');
|
|
6
6
|
const yargs = require('yargs');
|
|
7
7
|
const execConfig = { env: {}, stdio: 'inherit' }
|
|
@@ -12,14 +12,14 @@ module.exports = class App extends DigigovCommand {
|
|
|
12
12
|
static examples = [
|
|
13
13
|
`$ digigov app`,
|
|
14
14
|
]
|
|
15
|
-
dirname=__dirname
|
|
15
|
+
dirname = __dirname
|
|
16
16
|
static load() { return App }
|
|
17
17
|
script = 'next'
|
|
18
18
|
async run() {
|
|
19
19
|
const [command, ...args] = this.argv;
|
|
20
20
|
let proc;
|
|
21
21
|
const project = resolveProject();
|
|
22
|
-
switch(command){
|
|
22
|
+
switch (command) {
|
|
23
23
|
case 'export':
|
|
24
24
|
await this.exec('rimraf', ['out'])
|
|
25
25
|
await this.exec(this.script, ['build'])
|
|
@@ -43,7 +43,7 @@ module.exports = class App extends DigigovCommand {
|
|
|
43
43
|
proc = this.exec(this.script, [command, ...args], execConfig);
|
|
44
44
|
break;
|
|
45
45
|
case 'test':
|
|
46
|
-
const
|
|
46
|
+
const test_args = yargs
|
|
47
47
|
.option('init', {
|
|
48
48
|
alias: 'i',
|
|
49
49
|
describe: 'Initialize project with specified parameters'
|
|
@@ -56,19 +56,26 @@ module.exports = class App extends DigigovCommand {
|
|
|
56
56
|
.option('pagesPath', {
|
|
57
57
|
alias: 'p',
|
|
58
58
|
describe: 'The directory where the pages are located relative to the project folder',
|
|
59
|
+
default: 'pages'
|
|
60
|
+
})
|
|
61
|
+
.option('screenSizes', {
|
|
62
|
+
alias: 's',
|
|
63
|
+
choices: ['xs', 'lg'],
|
|
64
|
+
describe: 'The screen sizes for viewport',
|
|
59
65
|
})
|
|
60
66
|
.help()
|
|
61
67
|
.argv;
|
|
62
68
|
|
|
63
|
-
if (
|
|
64
|
-
const { baseUrl, pagesPath } =
|
|
65
|
-
console.log(`Generating test files for pagesPath "${pagesPath}" with baseUrl "${baseUrl}"`);
|
|
69
|
+
if (test_args.init) {
|
|
70
|
+
const { baseUrl, pagesPath, screenSizes } = test_args;
|
|
71
|
+
console.log(`Generating test files for pagesPath "${pagesPath}" with baseUrl "${baseUrl}" for screen sizes "${screenSizes}"`);
|
|
66
72
|
const projectFolder = process.cwd();
|
|
67
|
-
generatePagesTestFile(projectFolder, pagesPath, baseUrl);
|
|
73
|
+
generatePagesTestFile(projectFolder, pagesPath, baseUrl, screenSizes);
|
|
68
74
|
} else {
|
|
69
|
-
console.log('Usage: digigov app test --init --baseUrl [baseUrl] --pagesPath [pagesPath]');
|
|
75
|
+
console.log('Usage: digigov app test --init --baseUrl [baseUrl] --pagesPath [pagesPath] --screenSizes [screenSizes]');
|
|
70
76
|
console.log('baseUrl: the base url of the running project (default: http://localhost:3000)');
|
|
71
77
|
console.log('pagesPath: the directory where the pages are located (default: pages, src/pages)');
|
|
78
|
+
console.log('screenSizes: the screen sizes for viewport (default: lg)');
|
|
72
79
|
}
|
|
73
80
|
break;
|
|
74
81
|
default:
|
package/lib/test/init.js
CHANGED
|
@@ -4,53 +4,93 @@ const glob = require('glob');
|
|
|
4
4
|
|
|
5
5
|
const FILE_EXTENSIONS = ['js', 'jsx', 'ts', 'tsx'];
|
|
6
6
|
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
7
|
+
const SCREEN_SIZES = {
|
|
8
|
+
'xs': { width: 375, height: 667, deviceScaleFactor: 1 },
|
|
9
|
+
'lg': { width: 1280, height: 720, deviceScaleFactor: 2 }
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
const appendTestFile = (fileRelativePath, testFile, screenSizes) => {
|
|
13
|
+
screenSizes.forEach((screenSize) => {
|
|
14
|
+
testFile += `\ntest('${fileRelativePath.replace('index', '')} screen-${screenSize}', async () => {
|
|
15
|
+
await page${screenSize.toUpperCase()}.goto(\`\${baseUrl}${fileRelativePath.replace('index', '')}\`);
|
|
16
|
+
await delay(SCREENSHOT_DELAY);
|
|
17
|
+
await page${screenSize.toUpperCase()}.waitForLoadState('domcontentloaded');
|
|
18
|
+
const screenshot = await page${screenSize.toUpperCase()}.screenshot({ fullPage: true });
|
|
19
|
+
expect(screenshot).toMatchSnapshot();
|
|
20
|
+
});\n`;
|
|
21
|
+
});
|
|
13
22
|
return testFile;
|
|
14
23
|
}
|
|
15
24
|
|
|
16
|
-
const
|
|
25
|
+
const generateBrowserContexts = (screenSizes) => {
|
|
26
|
+
let viewportSizes = '';
|
|
27
|
+
screenSizes.forEach((screenSize) => {
|
|
28
|
+
viewportSizes += `\n// Create a context with "${screenSize}" screen size
|
|
29
|
+
const context${screenSize.toUpperCase()} = await browser.newContext({
|
|
30
|
+
viewport: { width: ${SCREEN_SIZES[screenSize].width}, height: ${SCREEN_SIZES[screenSize].height} },
|
|
31
|
+
deviceScaleFactor: ${SCREEN_SIZES[screenSize].deviceScaleFactor},
|
|
32
|
+
});\n`;
|
|
33
|
+
});
|
|
34
|
+
return viewportSizes;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
const initializePages = (screenSizes) => {
|
|
38
|
+
let initializePages = '';
|
|
39
|
+
screenSizes.forEach((screenSize) => {
|
|
40
|
+
initializePages += `let page${screenSize.toUpperCase()};\n`;
|
|
41
|
+
});
|
|
42
|
+
return initializePages;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
const generateNewPages = (screenSizes) => {
|
|
46
|
+
let newPages = '';
|
|
47
|
+
screenSizes.forEach((screenSize) => {
|
|
48
|
+
newPages += `page${screenSize.toUpperCase()} = await context${screenSize.toUpperCase()}.newPage();\n`;
|
|
49
|
+
});
|
|
50
|
+
return newPages;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
const generatePagesTestFile = (projectFolder, pagesPath = 'pages', baseUrl = 'http://localhost:3000', testFileName = 'index.spec.ts', screenSizes=['xs', 'lg']) => {
|
|
17
54
|
let pagesFullPath = '';
|
|
18
|
-
if (pagesPath) {
|
|
55
|
+
if (fs.existsSync(path.join(projectFolder, pagesPath))) {
|
|
19
56
|
pagesFullPath = path.join(projectFolder, pagesPath);
|
|
20
57
|
}
|
|
21
|
-
else {
|
|
22
|
-
|
|
23
|
-
pagesFullPath = path.join(projectFolder, 'pages');
|
|
24
|
-
}
|
|
25
|
-
else if (fs.existsSync(path.join(projectFolder, 'src', 'pages'))) {
|
|
26
|
-
pagesFullPath = path.join(projectFolder, 'src/pages');
|
|
27
|
-
}
|
|
58
|
+
else if (fs.existsSync(path.join(projectFolder, 'src', pagesPath))) {
|
|
59
|
+
pagesFullPath = path.join(projectFolder, `src/${pagesPath}`);
|
|
28
60
|
}
|
|
29
61
|
let testFile = `import { test, expect } from '@playwright/test';
|
|
30
62
|
import { chromium } from 'playwright';
|
|
31
63
|
|
|
32
64
|
const baseUrl = '${baseUrl}';
|
|
65
|
+
const SCREENSHOT_DELAY = 2000;
|
|
33
66
|
|
|
34
|
-
test.describe('
|
|
67
|
+
test.describe('/pages', () => {
|
|
35
68
|
let browser;
|
|
36
|
-
|
|
69
|
+
${initializePages(screenSizes)}
|
|
70
|
+
|
|
71
|
+
const delay = ms => new Promise(resolve => setTimeout(resolve, ms));
|
|
37
72
|
|
|
38
73
|
test.beforeAll(async () => {
|
|
74
|
+
// Wait until yarn start is loaded
|
|
75
|
+
test.setTimeout(60000);
|
|
76
|
+
await delay(30000);
|
|
39
77
|
browser = await chromium.launch();
|
|
40
|
-
|
|
78
|
+
${generateBrowserContexts(screenSizes)}
|
|
79
|
+
${generateNewPages(screenSizes)}
|
|
41
80
|
});
|
|
42
81
|
|
|
43
82
|
test.afterAll(async () => {
|
|
44
83
|
await browser.close();
|
|
45
84
|
});
|
|
46
85
|
`;
|
|
86
|
+
|
|
47
87
|
const pagesPathRegex = new RegExp(`.*${pagesFullPath.replace('/', '\\/')}(.*)`);
|
|
48
88
|
glob.sync(`${pagesFullPath}/**/*.@(${FILE_EXTENSIONS.join('|')})`).forEach((fileFullPath) => {
|
|
49
89
|
const fileRelativePath = fileFullPath.replace(pagesPathRegex, '$1');
|
|
50
90
|
const pageFileName = fileRelativePath.substring(fileRelativePath.lastIndexOf('/') + 1);
|
|
51
91
|
// Check of the file starts with letter or digit
|
|
52
92
|
if(/^[a-zA-Z0-9]/.test(pageFileName)) {
|
|
53
|
-
testFile = appendTestFile(fileRelativePath.replace(/\.[^/.]+$/, ''),
|
|
93
|
+
testFile = appendTestFile(fileRelativePath.replace(/\.[^/.]+$/, ''), testFile, screenSizes);
|
|
54
94
|
}
|
|
55
95
|
});
|
|
56
96
|
testFile += '\n});';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@digigov/cli-app",
|
|
3
|
-
"version": "1.0.0-
|
|
3
|
+
"version": "1.0.0-8b33e4c8",
|
|
4
4
|
"description": "@digigov developer cli tool",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"author": "GRNET Developers <devs@lists.grnet.gr>",
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
"express": "4.17.1",
|
|
11
11
|
"http-proxy-middleware": "1.0.3",
|
|
12
12
|
"next-images": "1.3.0",
|
|
13
|
-
"@digigov/cli-build": "1.0.0-
|
|
13
|
+
"@digigov/cli-build": "1.0.0-8b33e4c8",
|
|
14
14
|
"url-loader": "4.1.1",
|
|
15
15
|
"next": "10.0.9",
|
|
16
16
|
"publint": "0.1.8",
|
|
@@ -21,13 +21,13 @@
|
|
|
21
21
|
"peerDependencies": {
|
|
22
22
|
"rimraf": "3.0.2",
|
|
23
23
|
"execa": "5.0.0",
|
|
24
|
-
"@digigov/cli": "1.0.0-
|
|
24
|
+
"@digigov/cli": "1.0.0-8b33e4c8",
|
|
25
25
|
"typescript": "4.2.3",
|
|
26
26
|
"@types/node": "16.6.2",
|
|
27
27
|
"@types/react": "16.9.56",
|
|
28
28
|
"autoprefixer": "10.4.16",
|
|
29
29
|
"postcss": "8.4.4",
|
|
30
|
-
"@digigov/css": "1.0.0-
|
|
30
|
+
"@digigov/css": "1.0.0-8b33e4c8",
|
|
31
31
|
"tailwindcss": "3.3.5"
|
|
32
32
|
},
|
|
33
33
|
"scripts": {
|