@nebula.js/cli-create 3.1.0-alpha.1 → 3.1.0-alpha.2

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nebula.js/cli-create",
3
- "version": "3.1.0-alpha.1",
3
+ "version": "3.1.0-alpha.2",
4
4
  "description": "",
5
5
  "license": "MIT",
6
6
  "author": "QlikTech International AB",
@@ -24,8 +24,8 @@
24
24
  "dependencies": {
25
25
  "chalk": "4.1.2",
26
26
  "ejs": "3.1.8",
27
- "fs-extra": "10.1.0",
27
+ "fs-extra": "11.1.0",
28
28
  "inquirer": "8.2.5"
29
29
  },
30
- "gitHead": "62d1862cc80fca13ab2753702ce2c396fed4b9d8"
30
+ "gitHead": "363faf5d8b9fd925fad73e9fe36da3d9d57d5b4b"
31
31
  }
@@ -9,3 +9,6 @@
9
9
  node_modules
10
10
  coverage
11
11
  dist/
12
+
13
+ test/integration/artifacts
14
+ test/integration/test-report
@@ -19,14 +19,15 @@
19
19
  "lint": "eslint src",
20
20
  "start": "nebula serve",
21
21
  "sense": "nebula sense --ext src/ext.js --meta src/meta.json",
22
- "test:integration": "aw puppet --testExt '*.int.js' --glob 'test/integration/**/*.int.js'"
22
+ "test:e2e": "playwright test",
23
+ "test:e2e:report": "playwright show-report test/integration/test-report"
23
24
  },
24
25
  "devDependencies": {
25
- "@after-work.js/aw": "6.0.10",
26
26
  "@nebula.js/cli": "<%= nebulaVersion %>",
27
27
  "@nebula.js/cli-build": "<%= nebulaVersion %>",
28
28
  "@nebula.js/cli-serve": "<%= nebulaVersion %>",
29
29
  "@nebula.js/cli-sense": "<%= nebulaVersion %>",
30
+ "@playwright/test": "^1.28.1",
30
31
  "@qlik/sdk": "^0.12.0",
31
32
  "eslint": "7.27.0",
32
33
  "eslint-config-airbnb-base": "14.2.1",
@@ -0,0 +1,34 @@
1
+ import { devices } from '@playwright/test';
2
+
3
+ export default {
4
+ testMatch: /.*\.e2e\.js/,
5
+ outputDir: './test/integration/artifacts/',
6
+
7
+ reporter: [
8
+ ['list'],
9
+ ['json', { outputFile: './test/integration/test-report/test-results.json' }],
10
+ [
11
+ 'html',
12
+ {
13
+ outputFolder: './test/integration/test-report',
14
+ open: process.env.SKIP_OPEN_REPORT ? 'never' : 'on-failure',
15
+ },
16
+ ],
17
+ ],
18
+
19
+ use: {
20
+ headless: true,
21
+ viewport: { width: 1280, height: 720 },
22
+ ignoreHTTPSErrors: true,
23
+ screenshot: 'only-on-failure',
24
+ video: 'retain-on-failure',
25
+ },
26
+
27
+ projects: [
28
+ {
29
+ name: 'chromium',
30
+ headless: true,
31
+ use: { ...devices['Desktop Chrome'] },
32
+ },
33
+ ],
34
+ };
@@ -0,0 +1,30 @@
1
+ const { test, expect } = require('@playwright/test');
2
+ const path = require('path');
3
+ const serve = require('@nebula.js/cli-serve'); // eslint-disable-line
4
+
5
+ test.describe('sn', () => {
6
+ let server;
7
+
8
+ test.beforeAll(async () => {
9
+ server = await serve({
10
+ build: false,
11
+ open: false,
12
+ fixturePath: path.resolve(__dirname, 'fixtures'),
13
+ });
14
+ process.env.BASE_URL = server.url;
15
+ });
16
+
17
+ test.afterAll(() => {
18
+ server.close();
19
+ });
20
+
21
+ test('should say hello', async ({ page }) => {
22
+ const content = '.njs-viz[data-render-count="1"]';
23
+
24
+ const url = `${process.env.BASE_URL}/render?fixture=hello.fix.js`;
25
+ await page.goto(url);
26
+ await page.waitForSelector(content, { visible: true });
27
+ const text = await page.$eval(content, (el) => el.textContent);
28
+ expect(text).toBe('Hello!');
29
+ });
30
+ });
@@ -0,0 +1,29 @@
1
+ const { test, expect } = require('@playwright/test');
2
+ const path = require('path');
3
+ const serve = require('@nebula.js/cli-serve'); // eslint-disable-line
4
+
5
+ test.describe('barchart', () => {
6
+ let server;
7
+
8
+ test.beforeAll(async () => {
9
+ server = await serve({
10
+ build: false,
11
+ open: false,
12
+ fixturePath: path.resolve(__dirname, 'fixtures'),
13
+ });
14
+ process.env.BASE_URL = server.url;
15
+ });
16
+
17
+ test.afterAll(() => {
18
+ server.close();
19
+ });
20
+
21
+ test('should have 20 bars', async ({ page }) => {
22
+ await page.goto(`${process.env.BASE_URL}/render?fixture=scenario-1.fix.js`);
23
+ await page.waitForSelector('.njs-viz[data-render-count="1"]', {
24
+ visible: true,
25
+ });
26
+ const rects = await page.$$('rect[data-label]');
27
+ expect(rects.length).toBe(20);
28
+ });
29
+ });
@@ -19,14 +19,15 @@
19
19
  "lint": "eslint src",
20
20
  "start": "nebula serve",
21
21
  "sense": "nebula sense",
22
- "test:integration": "aw puppet --testExt '*.int.js' --glob 'test/integration/**/*.int.js'"
22
+ "test:e2e": "playwright test",
23
+ "test:e2e:report": "playwright show-report test/integration/test-report"
23
24
  },
24
25
  "devDependencies": {
25
- "@after-work.js/aw": "6.0.14",
26
26
  "@nebula.js/cli": "<%= nebulaVersion %>",
27
27
  "@nebula.js/cli-build": "<%= nebulaVersion %>",
28
28
  "@nebula.js/cli-serve": "<%= nebulaVersion %>",
29
29
  "@nebula.js/cli-sense": "<%= nebulaVersion %>",
30
+ "@playwright/test": "^1.28.1",
30
31
  "eslint": "7.27.0",
31
32
  "eslint-config-airbnb-base": "14.2.1",
32
33
  "eslint-plugin-import": "2.23.4",
@@ -0,0 +1,34 @@
1
+ import { devices } from '@playwright/test';
2
+
3
+ export default {
4
+ testMatch: /.*\.e2e\.js/,
5
+ outputDir: './test/integration/artifacts/',
6
+
7
+ reporter: [
8
+ ['list'],
9
+ ['json', { outputFile: './test/integration/test-report/test-results.json' }],
10
+ [
11
+ 'html',
12
+ {
13
+ outputFolder: './test/integration/test-report',
14
+ open: process.env.SKIP_OPEN_REPORT ? 'never' : 'on-failure',
15
+ },
16
+ ],
17
+ ],
18
+
19
+ use: {
20
+ headless: true,
21
+ viewport: { width: 1280, height: 720 },
22
+ ignoreHTTPSErrors: true,
23
+ screenshot: 'only-on-failure',
24
+ video: 'retain-on-failure',
25
+ },
26
+
27
+ projects: [
28
+ {
29
+ name: 'chromium',
30
+ headless: true,
31
+ use: { ...devices['Desktop Chrome'] },
32
+ },
33
+ ],
34
+ };
@@ -0,0 +1,499 @@
1
+ export default function fixture() {
2
+ return {
3
+ type: 'barchart',
4
+ genericObjects: [
5
+ {
6
+ getLayout() {
7
+ return {
8
+ qInfo: {
9
+ qId: 'fb320913-0264-4e2a-ad1b-225170dbaef6',
10
+ qType: 'barchart',
11
+ },
12
+ qMeta: {
13
+ privileges: ['read', 'update', 'delete', 'exportdata'],
14
+ },
15
+ qSelectionInfo: {},
16
+ visualization: 'barchart',
17
+ showTitles: true,
18
+ qHyperCube: {
19
+ qSize: {
20
+ qcx: 2,
21
+ qcy: 26,
22
+ },
23
+ qDimensionInfo: [
24
+ {
25
+ qFallbackTitle: 'Alpha',
26
+ qApprMaxGlyphCount: 1,
27
+ qCardinal: 26,
28
+ qSortIndicator: 'A',
29
+ qGroupFallbackTitles: ['Alpha'],
30
+ qGroupPos: 0,
31
+ qStateCounts: {
32
+ qLocked: 0,
33
+ qSelected: 0,
34
+ qOption: 26,
35
+ qDeselected: 0,
36
+ qAlternative: 0,
37
+ qExcluded: 0,
38
+ qSelectedExcluded: 0,
39
+ qLockedExcluded: 0,
40
+ },
41
+ qTags: ['$ascii', '$text'],
42
+ qDimensionType: 'D',
43
+ qGrouping: 'N',
44
+ qNumFormat: {
45
+ qType: 'U',
46
+ qnDec: 0,
47
+ qUseThou: 0,
48
+ },
49
+ qIsAutoFormat: true,
50
+ qGroupFieldDefs: ['Alpha'],
51
+ qMin: 'NaN',
52
+ qMax: 'NaN',
53
+ qAttrExprInfo: [],
54
+ qAttrDimInfo: [],
55
+ qCardinalities: {
56
+ qCardinal: 26,
57
+ qHypercubeCardinal: 26,
58
+ qAllValuesCardinal: -1,
59
+ },
60
+ cId: 'gduah5',
61
+ },
62
+ ],
63
+ qMeasureInfo: [
64
+ {
65
+ qFallbackTitle: '=5+avg(Expression1)',
66
+ qApprMaxGlyphCount: 5,
67
+ qCardinal: 0,
68
+ qSortIndicator: 'D',
69
+ qNumFormat: {
70
+ qType: 'R',
71
+ qnDec: 0,
72
+ qUseThou: 0,
73
+ qFmt: '##############',
74
+ qDec: '.',
75
+ qThou: ',',
76
+ },
77
+ qMin: 6,
78
+ qMax: 453.5,
79
+ qIsAutoFormat: true,
80
+ qAttrExprInfo: [],
81
+ qAttrDimInfo: [],
82
+ qTrendLines: [],
83
+ cId: 'fsorka',
84
+ },
85
+ ],
86
+ qEffectiveInterColumnSortOrder: [0, 1],
87
+ qGrandTotalRow: [
88
+ {
89
+ qText: '148.7',
90
+ qNum: 148.7,
91
+ qElemNumber: -1,
92
+ qState: 'X',
93
+ qIsTotalCell: true,
94
+ },
95
+ ],
96
+ qDataPages: [
97
+ {
98
+ qMatrix: [
99
+ [
100
+ {
101
+ qText: 'A',
102
+ qNum: 'NaN',
103
+ qElemNumber: 0,
104
+ qState: 'O',
105
+ },
106
+ {
107
+ qText: '-',
108
+ qNum: 'NaN',
109
+ qElemNumber: 0,
110
+ qState: 'L',
111
+ qIsNull: true,
112
+ },
113
+ ],
114
+ [
115
+ {
116
+ qText: 'B',
117
+ qNum: 'NaN',
118
+ qElemNumber: 1,
119
+ qState: 'O',
120
+ },
121
+ {
122
+ qText: '87',
123
+ qNum: 87,
124
+ qElemNumber: 0,
125
+ qState: 'L',
126
+ },
127
+ ],
128
+ [
129
+ {
130
+ qText: 'C',
131
+ qNum: 'NaN',
132
+ qElemNumber: 2,
133
+ qState: 'O',
134
+ },
135
+ {
136
+ qText: '285',
137
+ qNum: 285,
138
+ qElemNumber: 0,
139
+ qState: 'L',
140
+ },
141
+ ],
142
+ [
143
+ {
144
+ qText: 'D',
145
+ qNum: 'NaN',
146
+ qElemNumber: 3,
147
+ qState: 'O',
148
+ },
149
+ {
150
+ qText: '95',
151
+ qNum: 95,
152
+ qElemNumber: 0,
153
+ qState: 'L',
154
+ },
155
+ ],
156
+ [
157
+ {
158
+ qText: 'E',
159
+ qNum: 'NaN',
160
+ qElemNumber: 4,
161
+ qState: 'O',
162
+ },
163
+ {
164
+ qText: '30.5',
165
+ qNum: 30.5,
166
+ qElemNumber: 0,
167
+ qState: 'L',
168
+ },
169
+ ],
170
+ [
171
+ {
172
+ qText: 'F',
173
+ qNum: 'NaN',
174
+ qElemNumber: 5,
175
+ qState: 'O',
176
+ },
177
+ {
178
+ qText: '78',
179
+ qNum: 78,
180
+ qElemNumber: 0,
181
+ qState: 'L',
182
+ },
183
+ ],
184
+ [
185
+ {
186
+ qText: 'G',
187
+ qNum: 'NaN',
188
+ qElemNumber: 6,
189
+ qState: 'O',
190
+ },
191
+ {
192
+ qText: '126',
193
+ qNum: 126,
194
+ qElemNumber: 0,
195
+ qState: 'L',
196
+ },
197
+ ],
198
+ [
199
+ {
200
+ qText: 'H',
201
+ qNum: 'NaN',
202
+ qElemNumber: 7,
203
+ qState: 'O',
204
+ },
205
+ {
206
+ qText: '327.33333333333',
207
+ qNum: 327.3333333333333,
208
+ qElemNumber: 0,
209
+ qState: 'L',
210
+ },
211
+ ],
212
+ [
213
+ {
214
+ qText: 'I',
215
+ qNum: 'NaN',
216
+ qElemNumber: 8,
217
+ qState: 'O',
218
+ },
219
+ {
220
+ qText: '6',
221
+ qNum: 6,
222
+ qElemNumber: 0,
223
+ qState: 'L',
224
+ },
225
+ ],
226
+ [
227
+ {
228
+ qText: 'J',
229
+ qNum: 'NaN',
230
+ qElemNumber: 9,
231
+ qState: 'O',
232
+ },
233
+ {
234
+ qText: '102',
235
+ qNum: 102,
236
+ qElemNumber: 0,
237
+ qState: 'L',
238
+ },
239
+ ],
240
+ [
241
+ {
242
+ qText: 'K',
243
+ qNum: 'NaN',
244
+ qElemNumber: 10,
245
+ qState: 'O',
246
+ },
247
+ {
248
+ qText: '273',
249
+ qNum: 273,
250
+ qElemNumber: 0,
251
+ qState: 'L',
252
+ },
253
+ ],
254
+ [
255
+ {
256
+ qText: 'L',
257
+ qNum: 'NaN',
258
+ qElemNumber: 11,
259
+ qState: 'O',
260
+ },
261
+ {
262
+ qText: '241.8',
263
+ qNum: 241.8,
264
+ qElemNumber: 0,
265
+ qState: 'L',
266
+ },
267
+ ],
268
+ [
269
+ {
270
+ qText: 'M',
271
+ qNum: 'NaN',
272
+ qElemNumber: 12,
273
+ qState: 'O',
274
+ },
275
+ {
276
+ qText: '12',
277
+ qNum: 12,
278
+ qElemNumber: 0,
279
+ qState: 'L',
280
+ },
281
+ ],
282
+ [
283
+ {
284
+ qText: 'N',
285
+ qNum: 'NaN',
286
+ qElemNumber: 13,
287
+ qState: 'O',
288
+ },
289
+ {
290
+ qText: '34',
291
+ qNum: 34,
292
+ qElemNumber: 0,
293
+ qState: 'L',
294
+ },
295
+ ],
296
+ [
297
+ {
298
+ qText: 'O',
299
+ qNum: 'NaN',
300
+ qElemNumber: 14,
301
+ qState: 'O',
302
+ },
303
+ {
304
+ qText: '49.4',
305
+ qNum: 49.4,
306
+ qElemNumber: 0,
307
+ qState: 'L',
308
+ },
309
+ ],
310
+ [
311
+ {
312
+ qText: 'P',
313
+ qNum: 'NaN',
314
+ qElemNumber: 15,
315
+ qState: 'O',
316
+ },
317
+ {
318
+ qText: '87.666666666667',
319
+ qNum: 87.66666666666667,
320
+ qElemNumber: 0,
321
+ qState: 'L',
322
+ },
323
+ ],
324
+ [
325
+ {
326
+ qText: 'Q',
327
+ qNum: 'NaN',
328
+ qElemNumber: 16,
329
+ qState: 'O',
330
+ },
331
+ {
332
+ qText: '453.5',
333
+ qNum: 453.5,
334
+ qElemNumber: 0,
335
+ qState: 'L',
336
+ },
337
+ ],
338
+ [
339
+ {
340
+ qText: 'R',
341
+ qNum: 'NaN',
342
+ qElemNumber: 17,
343
+ qState: 'O',
344
+ },
345
+ {
346
+ qText: '33',
347
+ qNum: 33,
348
+ qElemNumber: 0,
349
+ qState: 'L',
350
+ },
351
+ ],
352
+ [
353
+ {
354
+ qText: 'S',
355
+ qNum: 'NaN',
356
+ qElemNumber: 18,
357
+ qState: 'O',
358
+ },
359
+ {
360
+ qText: '49',
361
+ qNum: 49,
362
+ qElemNumber: 0,
363
+ qState: 'L',
364
+ },
365
+ ],
366
+ [
367
+ {
368
+ qText: 'T',
369
+ qNum: 'NaN',
370
+ qElemNumber: 19,
371
+ qState: 'O',
372
+ },
373
+ {
374
+ qText: '64',
375
+ qNum: 64,
376
+ qElemNumber: 0,
377
+ qState: 'L',
378
+ },
379
+ ],
380
+ [
381
+ {
382
+ qText: 'U',
383
+ qNum: 'NaN',
384
+ qElemNumber: 20,
385
+ qState: 'O',
386
+ },
387
+ {
388
+ qText: '46',
389
+ qNum: 46,
390
+ qElemNumber: 0,
391
+ qState: 'L',
392
+ },
393
+ ],
394
+ [
395
+ {
396
+ qText: 'V',
397
+ qNum: 'NaN',
398
+ qElemNumber: 21,
399
+ qState: 'O',
400
+ },
401
+ {
402
+ qText: '-',
403
+ qNum: 'NaN',
404
+ qElemNumber: 0,
405
+ qState: 'L',
406
+ qIsNull: true,
407
+ },
408
+ ],
409
+ [
410
+ {
411
+ qText: 'W',
412
+ qNum: 'NaN',
413
+ qElemNumber: 22,
414
+ qState: 'O',
415
+ },
416
+ {
417
+ qText: '-',
418
+ qNum: 'NaN',
419
+ qElemNumber: 0,
420
+ qState: 'L',
421
+ qIsNull: true,
422
+ },
423
+ ],
424
+ [
425
+ {
426
+ qText: 'X',
427
+ qNum: 'NaN',
428
+ qElemNumber: 23,
429
+ qState: 'O',
430
+ },
431
+ {
432
+ qText: '-',
433
+ qNum: 'NaN',
434
+ qElemNumber: 0,
435
+ qState: 'L',
436
+ qIsNull: true,
437
+ },
438
+ ],
439
+ [
440
+ {
441
+ qText: 'Y',
442
+ qNum: 'NaN',
443
+ qElemNumber: 24,
444
+ qState: 'O',
445
+ },
446
+ {
447
+ qText: '-',
448
+ qNum: 'NaN',
449
+ qElemNumber: 0,
450
+ qState: 'L',
451
+ qIsNull: true,
452
+ },
453
+ ],
454
+ [
455
+ {
456
+ qText: 'Z',
457
+ qNum: 'NaN',
458
+ qElemNumber: 25,
459
+ qState: 'O',
460
+ },
461
+ {
462
+ qText: '-',
463
+ qNum: 'NaN',
464
+ qElemNumber: 0,
465
+ qState: 'L',
466
+ qIsNull: true,
467
+ },
468
+ ],
469
+ ],
470
+ qTails: [
471
+ {
472
+ qUp: 0,
473
+ qDown: 0,
474
+ },
475
+ ],
476
+ qArea: {
477
+ qLeft: 0,
478
+ qTop: 0,
479
+ qWidth: 2,
480
+ qHeight: 26,
481
+ },
482
+ },
483
+ ],
484
+ qPivotDataPages: [],
485
+ qStackedDataPages: [],
486
+ qMode: 'S',
487
+ qNoOfLeftDims: -1,
488
+ qTreeNodesOnDim: [],
489
+ qColumnOrder: [],
490
+ },
491
+ title: '',
492
+ subtitle: '',
493
+ footnote: '',
494
+ };
495
+ },
496
+ },
497
+ ],
498
+ };
499
+ }
@@ -0,0 +1,26 @@
1
+ /* eslint no-unused-vars: 0 */
2
+ const { test, expect } = require('@playwright/test');
3
+ const path = require('path');
4
+ const serve = require('@nebula.js/cli-serve'); // eslint-disable-line
5
+
6
+ test.describe('barchart', () => {
7
+ let server;
8
+
9
+ test.beforeAll(async () => {
10
+ server = await serve({
11
+ build: false,
12
+ open: false,
13
+ fixturePath: path.resolve(__dirname, 'fixtures'),
14
+ });
15
+ process.env.BASE_URL = server.url;
16
+ });
17
+
18
+ test.afterAll(() => {
19
+ server.close();
20
+ });
21
+
22
+ test('should have 20 bars', async ({ page }) => {
23
+ // add your e2e tests here...
24
+ // expect(1 + 1).toBe(2)
25
+ });
26
+ });
@@ -1,10 +0,0 @@
1
- describe('sn', () => {
2
- const content = '.njs-viz[data-render-count="1"]';
3
- it('should say hello', async () => {
4
- const url = `${process.env.BASE_URL}/render?fixture=hello.fix.js`;
5
- await page.goto(url);
6
- await page.waitForSelector(content, { visible: true });
7
- const text = await page.$eval(content, (el) => el.textContent);
8
- expect(text).to.equal('Hello!');
9
- });
10
- });
@@ -1,30 +0,0 @@
1
- const path = require('path');
2
- const serve = require('@nebula.js/cli-serve'); // eslint-disable-line
3
-
4
- page.on('pageerror', (e) => {
5
- console.error('Web: ', e.message);
6
- });
7
-
8
- page.on('console', (msg) => {
9
- for (let i = 0; i < msg.args().length; ++i) {
10
- console.log(`console ${msg.text()}`);
11
- }
12
- });
13
-
14
- if (!process.env.BASE_URL) {
15
- let s;
16
-
17
- before(async function setup() {
18
- this.timeout(15000);
19
- s = await serve({
20
- open: false,
21
- fixturePath: path.resolve(__dirname, 'fixtures'),
22
- });
23
-
24
- process.env.BASE_URL = s.url;
25
- });
26
-
27
- after(() => {
28
- s.close();
29
- });
30
- }
@@ -1,10 +0,0 @@
1
- describe('barchart', () => {
2
- const content = '.njs-viz[data-render-count="1"]';
3
-
4
- it('should have 20 bars', async () => {
5
- await page.goto(`${process.env.BASE_URL}/render?fixture=scenario-1.fix.js`);
6
- await page.waitForSelector(content, { visible: true });
7
- const rects = await page.$$('rect[data-label]');
8
- expect(rects.length).to.equal(20);
9
- });
10
- });
@@ -1,31 +0,0 @@
1
- const path = require('path');
2
- const serve = require('@nebula.js/cli-serve'); // eslint-disable-line
3
-
4
- page.on('pageerror', (e) => {
5
- console.error('Web: ', e.message);
6
- });
7
-
8
- page.on('console', (msg) => {
9
- for (let i = 0; i < msg.args().length; ++i) {
10
- console.log(`console ${msg.text()}`);
11
- }
12
- });
13
-
14
- if (!process.env.BASE_URL) {
15
- let s;
16
-
17
- before(async function setup() {
18
- this.timeout(15000); // to allow time for the server to start
19
- s = await serve({
20
- build: false,
21
- open: false,
22
- fixturePath: path.resolve(__dirname, 'fixtures'),
23
- });
24
-
25
- process.env.BASE_URL = s.url;
26
- });
27
-
28
- after(() => {
29
- s.close();
30
- });
31
- }