@luma.gl/test-utils 8.5.10 → 8.6.0-alpha.4
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/LICENSE +8 -1
- package/dist/create-headless-context.d.ts +2 -0
- package/dist/create-headless-context.d.ts.map +1 -0
- package/dist/create-headless-context.js +37 -0
- package/dist/create-headless-context.js.map +1 -0
- package/dist/create-test-context.d.ts +2 -0
- package/dist/create-test-context.d.ts.map +1 -0
- package/dist/create-test-context.js +6 -0
- package/dist/create-test-context.js.map +1 -0
- package/dist/create-test-device.d.ts +5 -0
- package/dist/create-test-device.d.ts.map +1 -0
- package/dist/create-test-device.js +32 -0
- package/dist/create-test-device.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -0
- package/dist/performance-test-runner.d.ts +10 -0
- package/dist/performance-test-runner.d.ts.map +1 -0
- package/dist/{esm/performance-test-runner.js → performance-test-runner.js} +7 -1
- package/dist/performance-test-runner.js.map +1 -0
- package/dist/snapshot-test-runner.d.ts +9 -0
- package/dist/snapshot-test-runner.d.ts.map +1 -0
- package/dist/{esm/snapshot-test-runner.js → snapshot-test-runner.js} +5 -1
- package/dist/snapshot-test-runner.js.map +1 -0
- package/dist/test-runner.d.ts +45 -0
- package/dist/test-runner.d.ts.map +1 -0
- package/dist/{esm/test-runner.js → test-runner.js} +17 -8
- package/dist/test-runner.js.map +1 -0
- package/dist/utils.d.ts +7 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/{esm/utils.js → utils.js} +0 -0
- package/dist/utils.js.map +1 -0
- package/package.json +13 -11
- package/src/create-headless-context.ts +36 -0
- package/src/create-test-context.ts +29 -0
- package/src/create-test-device.ts +31 -0
- package/src/index.ts +5 -0
- package/src/{performance-test-runner.js → performance-test-runner.ts} +8 -5
- package/src/{snapshot-test-runner.js → snapshot-test-runner.ts} +10 -7
- package/src/{test-runner.js → test-runner.ts} +46 -22
- package/src/{utils.js → utils.ts} +0 -0
- package/dist/es5/context.d.ts +0 -4
- package/dist/es5/context.js +0 -65
- package/dist/es5/context.js.map +0 -1
- package/dist/es5/index.d.ts +0 -3
- package/dist/es5/index.js +0 -38
- package/dist/es5/index.js.map +0 -1
- package/dist/es5/performance-test-runner.d.ts +0 -5
- package/dist/es5/performance-test-runner.js +0 -96
- package/dist/es5/performance-test-runner.js.map +0 -1
- package/dist/es5/snapshot-test-runner.d.ts +0 -5
- package/dist/es5/snapshot-test-runner.js +0 -89
- package/dist/es5/snapshot-test-runner.js.map +0 -1
- package/dist/es5/test-runner.d.ts +0 -45
- package/dist/es5/test-runner.js +0 -239
- package/dist/es5/test-runner.js.map +0 -1
- package/dist/es5/utils.js +0 -17
- package/dist/es5/utils.js.map +0 -1
- package/dist/esm/context.d.ts +0 -4
- package/dist/esm/context.js +0 -57
- package/dist/esm/context.js.map +0 -1
- package/dist/esm/index.d.ts +0 -3
- package/dist/esm/index.js +0 -4
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/performance-test-runner.d.ts +0 -5
- package/dist/esm/performance-test-runner.js.map +0 -1
- package/dist/esm/snapshot-test-runner.d.ts +0 -5
- package/dist/esm/snapshot-test-runner.js.map +0 -1
- package/dist/esm/test-runner.d.ts +0 -45
- package/dist/esm/test-runner.js.map +0 -1
- package/dist/esm/utils.js.map +0 -1
- package/src/context.d.ts +0 -4
- package/src/context.js +0 -55
- package/src/index.d.ts +0 -3
- package/src/index.js +0 -3
- package/src/performance-test-runner.d.ts +0 -5
- package/src/snapshot-test-runner.d.ts +0 -5
- package/src/test-runner.d.ts +0 -45
|
@@ -1,39 +1,60 @@
|
|
|
1
|
+
// @ts-nocheck TODO remove
|
|
1
2
|
/* eslint-disable no-console */
|
|
2
3
|
import {AnimationLoop} from '@luma.gl/core';
|
|
3
|
-
import {pushContextState, popContextState} from '@luma.gl/
|
|
4
|
+
import {pushContextState, popContextState} from '@luma.gl/webgl';
|
|
5
|
+
|
|
6
|
+
export type TestRunnerTestCase = {
|
|
7
|
+
name: string;
|
|
8
|
+
onInitialize: any;
|
|
9
|
+
onRender: any;
|
|
10
|
+
onFinalize: any;
|
|
11
|
+
};
|
|
4
12
|
|
|
5
13
|
function noop() {}
|
|
6
14
|
|
|
7
|
-
const DEFAULT_TEST_CASE = {
|
|
15
|
+
const DEFAULT_TEST_CASE: TestRunnerTestCase = {
|
|
8
16
|
name: 'Unnamed test',
|
|
9
17
|
onInitialize: noop,
|
|
10
18
|
onRender: ({done}) => done(),
|
|
11
19
|
onFinalize: noop
|
|
12
20
|
};
|
|
13
21
|
|
|
14
|
-
|
|
22
|
+
export type TestRunnerOptions = {
|
|
23
|
+
// test lifecycle callback
|
|
24
|
+
onTestStart?: any;
|
|
25
|
+
onTestPass?: any;
|
|
26
|
+
onTestFail?: any;
|
|
27
|
+
|
|
28
|
+
// milliseconds to wait for each test case before aborting
|
|
29
|
+
timeout?: number;
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
const DEFAULT_TEST_OPTIONS: Required<TestRunnerOptions> = {
|
|
15
33
|
// test lifecycle callback
|
|
16
|
-
onTestStart: testCase => console.log(`# ${testCase.name}`),
|
|
17
|
-
onTestPass: testCase => console.log(`ok ${testCase.name} passed`),
|
|
18
|
-
onTestFail: testCase => console.log(`not ok ${testCase.name} failed`),
|
|
34
|
+
onTestStart: (testCase) => console.log(`# ${testCase.name}`),
|
|
35
|
+
onTestPass: (testCase) => console.log(`ok ${testCase.name} passed`),
|
|
36
|
+
onTestFail: (testCase) => console.log(`not ok ${testCase.name} failed`),
|
|
19
37
|
|
|
20
38
|
// milliseconds to wait for each test case before aborting
|
|
21
39
|
timeout: 2000
|
|
22
40
|
};
|
|
23
41
|
|
|
24
42
|
export default class TestRunner {
|
|
43
|
+
props;
|
|
44
|
+
isRunning = false;
|
|
45
|
+
readonly testOptions: object;
|
|
46
|
+
readonly _animationProps: object = {};
|
|
47
|
+
private _testCases: TestRunnerTestCase[] = [];
|
|
48
|
+
private _testCaseData = null;
|
|
49
|
+
|
|
25
50
|
/**
|
|
26
51
|
* props
|
|
27
52
|
* AnimationLoop props
|
|
28
53
|
*/
|
|
29
54
|
constructor(props = {}) {
|
|
30
55
|
this.props = props;
|
|
31
|
-
this.isRunning = false;
|
|
32
|
-
this._animationProps = {};
|
|
33
|
-
this._testCases = [];
|
|
34
|
-
this._testCaseData = null;
|
|
35
56
|
|
|
36
|
-
// @ts-
|
|
57
|
+
// @ts-expect-error
|
|
37
58
|
this.isHeadless = Boolean(window.browserTestDriver_isHeadless);
|
|
38
59
|
|
|
39
60
|
this.testOptions = Object.assign({}, DEFAULT_TEST_OPTIONS);
|
|
@@ -42,7 +63,10 @@ export default class TestRunner {
|
|
|
42
63
|
/**
|
|
43
64
|
* Add testCase(s)
|
|
44
65
|
*/
|
|
45
|
-
|
|
66
|
+
/**
|
|
67
|
+
* Add testCase(s)
|
|
68
|
+
*/
|
|
69
|
+
add(testCases: TestRunnerTestCase[]): this {
|
|
46
70
|
if (!Array.isArray(testCases)) {
|
|
47
71
|
testCases = [testCases];
|
|
48
72
|
}
|
|
@@ -52,15 +76,15 @@ export default class TestRunner {
|
|
|
52
76
|
return this;
|
|
53
77
|
}
|
|
54
78
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
run(options = {}) {
|
|
79
|
+
/**
|
|
80
|
+
* Returns a promise that resolves when all the test cases are done
|
|
81
|
+
*/
|
|
82
|
+
run(options: object = {}): Promise<void> {
|
|
59
83
|
Object.assign(this.testOptions, options);
|
|
60
84
|
|
|
61
|
-
return new Promise(resolve => {
|
|
85
|
+
return new Promise<void>(resolve => {
|
|
62
86
|
this._animationLoop = new AnimationLoop(
|
|
63
|
-
// @ts-
|
|
87
|
+
// @ts-expect-error TODO
|
|
64
88
|
Object.assign({}, this.props, {
|
|
65
89
|
onRender: this._onRender.bind(this),
|
|
66
90
|
onFinalize: () => {
|
|
@@ -74,7 +98,7 @@ export default class TestRunner {
|
|
|
74
98
|
this.isRunning = true;
|
|
75
99
|
this.isDiffing = false;
|
|
76
100
|
this._currentTestCase = null;
|
|
77
|
-
}).catch(error => {
|
|
101
|
+
}).catch((error) => {
|
|
78
102
|
this._fail({error: error.message});
|
|
79
103
|
});
|
|
80
104
|
}
|
|
@@ -105,12 +129,12 @@ export default class TestRunner {
|
|
|
105
129
|
/* Utilities */
|
|
106
130
|
|
|
107
131
|
_pass(result) {
|
|
108
|
-
// @ts-
|
|
132
|
+
// @ts-expect-error
|
|
109
133
|
this.testOptions.onTestPass(this._currentTestCase, result);
|
|
110
134
|
}
|
|
111
135
|
|
|
112
136
|
_fail(result) {
|
|
113
|
-
// @ts-
|
|
137
|
+
// @ts-expect-error
|
|
114
138
|
this.testOptions.onTestFail(this._currentTestCase, result);
|
|
115
139
|
}
|
|
116
140
|
|
|
@@ -202,7 +226,7 @@ export default class TestRunner {
|
|
|
202
226
|
tick: 0
|
|
203
227
|
})
|
|
204
228
|
)
|
|
205
|
-
).then(userData => {
|
|
229
|
+
).then((userData) => {
|
|
206
230
|
this._testCaseData = userData || {};
|
|
207
231
|
});
|
|
208
232
|
// invoke user callback
|
|
File without changes
|
package/dist/es5/context.d.ts
DELETED
package/dist/es5/context.js
DELETED
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.createTestContext = createTestContext;
|
|
7
|
-
exports.createHeadlessContext = createHeadlessContext;
|
|
8
|
-
|
|
9
|
-
var _gltools = require("@luma.gl/gltools");
|
|
10
|
-
|
|
11
|
-
var _env = require("probe.gl/env");
|
|
12
|
-
|
|
13
|
-
var ERR_HEADLESSGL_FAILED = 'Failed to create WebGL context in Node.js, headless gl returned null';
|
|
14
|
-
var ERR_HEADLESSGL_LOAD = " luma.gl: loaded under Node.js without headless gl installed, meaning that WebGL contexts can not be created. This may not be an error. For example, this is a typical configuration for isorender applications running on the server.";
|
|
15
|
-
var CONTEXT_DEFAULTS = {
|
|
16
|
-
width: 1,
|
|
17
|
-
height: 1,
|
|
18
|
-
debug: true,
|
|
19
|
-
throwOnError: false
|
|
20
|
-
};
|
|
21
|
-
|
|
22
|
-
function createTestContext() {
|
|
23
|
-
var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
24
|
-
opts = Object.assign({}, CONTEXT_DEFAULTS, opts);
|
|
25
|
-
var context = (0, _env.isBrowser)() ? (0, _gltools.createGLContext)(opts) : (0, _gltools.instrumentGLContext)(createHeadlessContext(opts), opts);
|
|
26
|
-
return context;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
function createHeadlessContext(options) {
|
|
30
|
-
var width = options.width,
|
|
31
|
-
height = options.height,
|
|
32
|
-
webgl1 = options.webgl1,
|
|
33
|
-
webgl2 = options.webgl2;
|
|
34
|
-
|
|
35
|
-
function onError(message) {
|
|
36
|
-
if (options.throwOnError) {
|
|
37
|
-
throw new Error(message);
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
return null;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
if (webgl2 && !webgl1) {
|
|
44
|
-
return onError('headless-gl does not support WebGL2');
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
var gl = headlessGL(width, height, options);
|
|
48
|
-
|
|
49
|
-
if (!gl) {
|
|
50
|
-
return onError(ERR_HEADLESSGL_FAILED);
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
return gl;
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
function headlessGL() {
|
|
57
|
-
var headless = module.require('gl');
|
|
58
|
-
|
|
59
|
-
if (!headless) {
|
|
60
|
-
throw new Error(ERR_HEADLESSGL_LOAD);
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
return headless.apply(void 0, arguments);
|
|
64
|
-
}
|
|
65
|
-
//# sourceMappingURL=context.js.map
|
package/dist/es5/context.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/context.js"],"names":["ERR_HEADLESSGL_FAILED","ERR_HEADLESSGL_LOAD","CONTEXT_DEFAULTS","width","height","debug","throwOnError","createTestContext","opts","Object","assign","context","createHeadlessContext","options","webgl1","webgl2","onError","message","Error","gl","headlessGL","headless","module","require"],"mappings":";;;;;;;;AAAA;;AACA;;AAEA,IAAMA,qBAAqB,GACzB,sEADF;AAGA,IAAMC,mBAAmB,gPAAzB;AAKA,IAAMC,gBAAgB,GAAG;AACvBC,EAAAA,KAAK,EAAE,CADgB;AAEvBC,EAAAA,MAAM,EAAE,CAFe;AAGvBC,EAAAA,KAAK,EAAE,IAHgB;AAIvBC,EAAAA,YAAY,EAAE;AAJS,CAAzB;;AAOO,SAASC,iBAAT,GAAsC;AAAA,MAAXC,IAAW,uEAAJ,EAAI;AAC3CA,EAAAA,IAAI,GAAGC,MAAM,CAACC,MAAP,CAAc,EAAd,EAAkBR,gBAAlB,EAAoCM,IAApC,CAAP;AACA,MAAMG,OAAO,GAAG,wBACZ,8BAAgBH,IAAhB,CADY,GAEZ,kCAAoBI,qBAAqB,CAACJ,IAAD,CAAzC,EAAiDA,IAAjD,CAFJ;AAGA,SAAOG,OAAP;AACD;;AAGM,SAASC,qBAAT,CAA+BC,OAA/B,EAAwC;AAAA,MACtCV,KADsC,GACLU,OADK,CACtCV,KADsC;AAAA,MAC/BC,MAD+B,GACLS,OADK,CAC/BT,MAD+B;AAAA,MACvBU,MADuB,GACLD,OADK,CACvBC,MADuB;AAAA,MACfC,MADe,GACLF,OADK,CACfE,MADe;;AAG7C,WAASC,OAAT,CAAiBC,OAAjB,EAA0B;AACxB,QAAIJ,OAAO,CAACP,YAAZ,EAA0B;AACxB,YAAM,IAAIY,KAAJ,CAAUD,OAAV,CAAN;AACD;;AACD,WAAO,IAAP;AACD;;AAED,MAAIF,MAAM,IAAI,CAACD,MAAf,EAAuB;AACrB,WAAOE,OAAO,CAAC,qCAAD,CAAd;AACD;;AACD,MAAMG,EAAE,GAAGC,UAAU,CAACjB,KAAD,EAAQC,MAAR,EAAgBS,OAAhB,CAArB;;AACA,MAAI,CAACM,EAAL,EAAS;AACP,WAAOH,OAAO,CAAChB,qBAAD,CAAd;AACD;;AACD,SAAOmB,EAAP;AACD;;AAGD,SAASC,UAAT,GAA6B;AAC3B,MAAMC,QAAQ,GAAGC,MAAM,CAACC,OAAP,CAAe,IAAf,CAAjB;;AACA,MAAI,CAACF,QAAL,EAAe;AACb,UAAM,IAAIH,KAAJ,CAAUjB,mBAAV,CAAN;AACD;;AACD,SAAOoB,QAAQ,MAAR,mBAAP;AACD","sourcesContent":["import {createGLContext, instrumentGLContext} from '@luma.gl/gltools';\nimport {isBrowser} from 'probe.gl/env';\n\nconst ERR_HEADLESSGL_FAILED =\n 'Failed to create WebGL context in Node.js, headless gl returned null';\n\nconst ERR_HEADLESSGL_LOAD = `\\\n luma.gl: loaded under Node.js without headless gl installed, meaning that WebGL \\\n contexts can not be created. This may not be an error. For example, this is a \\\n typical configuration for isorender applications running on the server.`;\n\nconst CONTEXT_DEFAULTS = {\n width: 1,\n height: 1,\n debug: true,\n throwOnError: false\n};\n\nexport function createTestContext(opts = {}) {\n opts = Object.assign({}, CONTEXT_DEFAULTS, opts);\n const context = isBrowser()\n ? createGLContext(opts)\n : instrumentGLContext(createHeadlessContext(opts), opts);\n return context;\n}\n\n// Create headless gl context (for running under Node.js)\nexport function createHeadlessContext(options) {\n const {width, height, webgl1, webgl2} = options;\n\n function onError(message) {\n if (options.throwOnError) {\n throw new Error(message);\n }\n return null;\n }\n\n if (webgl2 && !webgl1) {\n return onError('headless-gl does not support WebGL2');\n }\n const gl = headlessGL(width, height, options);\n if (!gl) {\n return onError(ERR_HEADLESSGL_FAILED);\n }\n return gl;\n}\n\n// Load headless gl dynamically, if available\nfunction headlessGL(...args) {\n const headless = module.require('gl');\n if (!headless) {\n throw new Error(ERR_HEADLESSGL_LOAD);\n }\n return headless(...args);\n}\n"],"file":"context.js"}
|
package/dist/es5/index.d.ts
DELETED
package/dist/es5/index.js
DELETED
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
|
-
Object.defineProperty(exports, "__esModule", {
|
|
6
|
-
value: true
|
|
7
|
-
});
|
|
8
|
-
Object.defineProperty(exports, "SnapshotTestRunner", {
|
|
9
|
-
enumerable: true,
|
|
10
|
-
get: function get() {
|
|
11
|
-
return _snapshotTestRunner.default;
|
|
12
|
-
}
|
|
13
|
-
});
|
|
14
|
-
Object.defineProperty(exports, "PerformanceTestRunner", {
|
|
15
|
-
enumerable: true,
|
|
16
|
-
get: function get() {
|
|
17
|
-
return _performanceTestRunner.default;
|
|
18
|
-
}
|
|
19
|
-
});
|
|
20
|
-
Object.defineProperty(exports, "createTestContext", {
|
|
21
|
-
enumerable: true,
|
|
22
|
-
get: function get() {
|
|
23
|
-
return _context.createTestContext;
|
|
24
|
-
}
|
|
25
|
-
});
|
|
26
|
-
Object.defineProperty(exports, "createHeadlessContext", {
|
|
27
|
-
enumerable: true,
|
|
28
|
-
get: function get() {
|
|
29
|
-
return _context.createHeadlessContext;
|
|
30
|
-
}
|
|
31
|
-
});
|
|
32
|
-
|
|
33
|
-
var _snapshotTestRunner = _interopRequireDefault(require("./snapshot-test-runner"));
|
|
34
|
-
|
|
35
|
-
var _performanceTestRunner = _interopRequireDefault(require("./performance-test-runner"));
|
|
36
|
-
|
|
37
|
-
var _context = require("./context");
|
|
38
|
-
//# sourceMappingURL=index.js.map
|
package/dist/es5/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/index.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA","sourcesContent":["export {default as SnapshotTestRunner} from './snapshot-test-runner';\nexport {default as PerformanceTestRunner} from './performance-test-runner';\nexport {createTestContext, createHeadlessContext} from './context';\n"],"file":"index.js"}
|
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
|
-
Object.defineProperty(exports, "__esModule", {
|
|
6
|
-
value: true
|
|
7
|
-
});
|
|
8
|
-
exports.default = void 0;
|
|
9
|
-
|
|
10
|
-
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
11
|
-
|
|
12
|
-
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
13
|
-
|
|
14
|
-
var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
|
|
15
|
-
|
|
16
|
-
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
17
|
-
|
|
18
|
-
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
19
|
-
|
|
20
|
-
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
21
|
-
|
|
22
|
-
var _probe = require("probe.gl");
|
|
23
|
-
|
|
24
|
-
var _testRunner = _interopRequireDefault(require("./test-runner"));
|
|
25
|
-
|
|
26
|
-
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
|
|
27
|
-
|
|
28
|
-
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
|
|
29
|
-
|
|
30
|
-
var PerformanceTestRunner = function (_TestRunner) {
|
|
31
|
-
(0, _inherits2.default)(PerformanceTestRunner, _TestRunner);
|
|
32
|
-
|
|
33
|
-
var _super = _createSuper(PerformanceTestRunner);
|
|
34
|
-
|
|
35
|
-
function PerformanceTestRunner(props) {
|
|
36
|
-
var _this;
|
|
37
|
-
|
|
38
|
-
(0, _classCallCheck2.default)(this, PerformanceTestRunner);
|
|
39
|
-
_this = _super.call(this, props);
|
|
40
|
-
Object.assign(_this.testOptions, {
|
|
41
|
-
maxFramesToRender: 60,
|
|
42
|
-
targetFPS: 50
|
|
43
|
-
});
|
|
44
|
-
return _this;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
(0, _createClass2.default)(PerformanceTestRunner, [{
|
|
48
|
-
key: "initTestCase",
|
|
49
|
-
value: function initTestCase(testCase) {
|
|
50
|
-
(0, _get2.default)((0, _getPrototypeOf2.default)(PerformanceTestRunner.prototype), "initTestCase", this).call(this, testCase);
|
|
51
|
-
this._stats = new _probe.Stats({
|
|
52
|
-
id: testCase.name
|
|
53
|
-
});
|
|
54
|
-
this._fps = this._stats.get('fps');
|
|
55
|
-
}
|
|
56
|
-
}, {
|
|
57
|
-
key: "shouldRender",
|
|
58
|
-
value: function shouldRender(animationProps) {
|
|
59
|
-
this._fps.timeEnd();
|
|
60
|
-
|
|
61
|
-
this._fps.timeStart();
|
|
62
|
-
|
|
63
|
-
if (this._fps.count > this.testOptions.maxFramesToRender) {
|
|
64
|
-
animationProps.done();
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
return true;
|
|
68
|
-
}
|
|
69
|
-
}, {
|
|
70
|
-
key: "assert",
|
|
71
|
-
value: function assert(testCase) {
|
|
72
|
-
var targetFPS = testCase.targetFPS || this.testOptions.targetFPS;
|
|
73
|
-
var count = this._fps.count;
|
|
74
|
-
|
|
75
|
-
var fps = this._fps.getHz();
|
|
76
|
-
|
|
77
|
-
if (fps >= targetFPS) {
|
|
78
|
-
this._pass({
|
|
79
|
-
fps: fps,
|
|
80
|
-
framesRendered: count
|
|
81
|
-
});
|
|
82
|
-
} else {
|
|
83
|
-
this._fail({
|
|
84
|
-
fps: fps,
|
|
85
|
-
framesRendered: count
|
|
86
|
-
});
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
this._next();
|
|
90
|
-
}
|
|
91
|
-
}]);
|
|
92
|
-
return PerformanceTestRunner;
|
|
93
|
-
}(_testRunner.default);
|
|
94
|
-
|
|
95
|
-
exports.default = PerformanceTestRunner;
|
|
96
|
-
//# sourceMappingURL=performance-test-runner.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/performance-test-runner.js"],"names":["PerformanceTestRunner","props","Object","assign","testOptions","maxFramesToRender","targetFPS","testCase","_stats","Stats","id","name","_fps","get","animationProps","timeEnd","timeStart","count","done","fps","getHz","_pass","framesRendered","_fail","_next","TestRunner"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;;;;;IAEqBA,qB;;;;;AACnB,iCAAYC,KAAZ,EAAmB;AAAA;;AAAA;AACjB,8BAAMA,KAAN;AAEAC,IAAAA,MAAM,CAACC,MAAP,CAAc,MAAKC,WAAnB,EAAgC;AAC9BC,MAAAA,iBAAiB,EAAE,EADW;AAE9BC,MAAAA,SAAS,EAAE;AAFmB,KAAhC;AAHiB;AAOlB;;;;iCAEYC,Q,EAAU;AACrB,0HAAmBA,QAAnB;AACA,WAAKC,MAAL,GAAc,IAAIC,YAAJ,CAAU;AAACC,QAAAA,EAAE,EAAEH,QAAQ,CAACI;AAAd,OAAV,CAAd;AACA,WAAKC,IAAL,GAAY,KAAKJ,MAAL,CAAYK,GAAZ,CAAgB,KAAhB,CAAZ;AACD;;;iCAEYC,c,EAAgB;AAC3B,WAAKF,IAAL,CAAUG,OAAV;;AACA,WAAKH,IAAL,CAAUI,SAAV;;AAGA,UAAI,KAAKJ,IAAL,CAAUK,KAAV,GAAkB,KAAKb,WAAL,CAAiBC,iBAAvC,EAA0D;AACxDS,QAAAA,cAAc,CAACI,IAAf;AACD;;AAED,aAAO,IAAP;AACD;;;2BAEMX,Q,EAAU;AAEf,UAAMD,SAAS,GAAGC,QAAQ,CAACD,SAAT,IAAsB,KAAKF,WAAL,CAAiBE,SAAzD;AACA,UAAMW,KAAK,GAAG,KAAKL,IAAL,CAAUK,KAAxB;;AACA,UAAME,GAAG,GAAG,KAAKP,IAAL,CAAUQ,KAAV,EAAZ;;AAEA,UAAID,GAAG,IAAIb,SAAX,EAAsB;AACpB,aAAKe,KAAL,CAAW;AAACF,UAAAA,GAAG,EAAHA,GAAD;AAAMG,UAAAA,cAAc,EAAEL;AAAtB,SAAX;AACD,OAFD,MAEO;AACL,aAAKM,KAAL,CAAW;AAACJ,UAAAA,GAAG,EAAHA,GAAD;AAAMG,UAAAA,cAAc,EAAEL;AAAtB,SAAX;AACD;;AACD,WAAKO,KAAL;AACD;;;EAxCgDC,mB","sourcesContent":["import {Stats} from 'probe.gl';\nimport TestRunner from './test-runner';\n\nexport default class PerformanceTestRunner extends TestRunner {\n constructor(props) {\n super(props);\n\n Object.assign(this.testOptions, {\n maxFramesToRender: 60,\n targetFPS: 50\n });\n }\n\n initTestCase(testCase) {\n super.initTestCase(testCase);\n this._stats = new Stats({id: testCase.name});\n this._fps = this._stats.get('fps');\n }\n\n shouldRender(animationProps) {\n this._fps.timeEnd();\n this._fps.timeStart();\n\n // @ts-ignore\n if (this._fps.count > this.testOptions.maxFramesToRender) {\n animationProps.done();\n }\n\n return true;\n }\n\n assert(testCase) {\n // @ts-ignore\n const targetFPS = testCase.targetFPS || this.testOptions.targetFPS;\n const count = this._fps.count;\n const fps = this._fps.getHz();\n\n if (fps >= targetFPS) {\n this._pass({fps, framesRendered: count});\n } else {\n this._fail({fps, framesRendered: count});\n }\n this._next();\n }\n}\n"],"file":"performance-test-runner.js"}
|
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
|
-
Object.defineProperty(exports, "__esModule", {
|
|
6
|
-
value: true
|
|
7
|
-
});
|
|
8
|
-
exports.default = void 0;
|
|
9
|
-
|
|
10
|
-
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
11
|
-
|
|
12
|
-
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
13
|
-
|
|
14
|
-
var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
|
|
15
|
-
|
|
16
|
-
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
17
|
-
|
|
18
|
-
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
19
|
-
|
|
20
|
-
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
21
|
-
|
|
22
|
-
var _testRunner = _interopRequireDefault(require("./test-runner"));
|
|
23
|
-
|
|
24
|
-
var _utils = require("./utils");
|
|
25
|
-
|
|
26
|
-
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
|
|
27
|
-
|
|
28
|
-
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
|
|
29
|
-
|
|
30
|
-
var SnapshotTestRunner = function (_TestRunner) {
|
|
31
|
-
(0, _inherits2.default)(SnapshotTestRunner, _TestRunner);
|
|
32
|
-
|
|
33
|
-
var _super = _createSuper(SnapshotTestRunner);
|
|
34
|
-
|
|
35
|
-
function SnapshotTestRunner(props) {
|
|
36
|
-
var _this;
|
|
37
|
-
|
|
38
|
-
(0, _classCallCheck2.default)(this, SnapshotTestRunner);
|
|
39
|
-
_this = _super.call(this, props);
|
|
40
|
-
_this.testOptions.imageDiffOptions = {};
|
|
41
|
-
return _this;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
(0, _createClass2.default)(SnapshotTestRunner, [{
|
|
45
|
-
key: "initTestCase",
|
|
46
|
-
value: function initTestCase(testCase) {
|
|
47
|
-
(0, _get2.default)((0, _getPrototypeOf2.default)(SnapshotTestRunner.prototype), "initTestCase", this).call(this, testCase);
|
|
48
|
-
|
|
49
|
-
if (!testCase.goldenImage) {
|
|
50
|
-
throw new Error("Test case ".concat(testCase.name, " does not have golden image"));
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
}, {
|
|
54
|
-
key: "shouldRender",
|
|
55
|
-
value: function shouldRender() {
|
|
56
|
-
return !this.isDiffing;
|
|
57
|
-
}
|
|
58
|
-
}, {
|
|
59
|
-
key: "assert",
|
|
60
|
-
value: function assert(testCase) {
|
|
61
|
-
var _this2 = this;
|
|
62
|
-
|
|
63
|
-
if (this.isDiffing) {
|
|
64
|
-
return;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
this.isDiffing = true;
|
|
68
|
-
var diffOptions = Object.assign({}, this.testOptions.imageDiffOptions, testCase.imageDiffOptions, {
|
|
69
|
-
goldenImage: testCase.goldenImage,
|
|
70
|
-
region: (0, _utils.getBoundingBoxInPage)(this._animationProps.canvas)
|
|
71
|
-
});
|
|
72
|
-
window.browserTestDriver_captureAndDiffScreen(diffOptions).then(function (result) {
|
|
73
|
-
if (result.success) {
|
|
74
|
-
_this2._pass(result);
|
|
75
|
-
} else {
|
|
76
|
-
_this2._fail(result);
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
_this2.isDiffing = false;
|
|
80
|
-
|
|
81
|
-
_this2._next();
|
|
82
|
-
});
|
|
83
|
-
}
|
|
84
|
-
}]);
|
|
85
|
-
return SnapshotTestRunner;
|
|
86
|
-
}(_testRunner.default);
|
|
87
|
-
|
|
88
|
-
exports.default = SnapshotTestRunner;
|
|
89
|
-
//# sourceMappingURL=snapshot-test-runner.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/snapshot-test-runner.js"],"names":["SnapshotTestRunner","props","testOptions","imageDiffOptions","testCase","goldenImage","Error","name","isDiffing","diffOptions","Object","assign","region","_animationProps","canvas","window","browserTestDriver_captureAndDiffScreen","then","result","success","_pass","_fail","_next","TestRunner"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;;;;;IAEqBA,kB;;;;;AACnB,8BAAYC,KAAZ,EAAmB;AAAA;;AAAA;AACjB,8BAAMA,KAAN;AAGA,UAAKC,WAAL,CAAiBC,gBAAjB,GAAoC,EAApC;AAJiB;AAKlB;;;;iCAEYC,Q,EAAU;AACrB,uHAAmBA,QAAnB;;AACA,UAAI,CAACA,QAAQ,CAACC,WAAd,EAA2B;AACzB,cAAM,IAAIC,KAAJ,qBAAuBF,QAAQ,CAACG,IAAhC,iCAAN;AACD;AACF;;;mCAEc;AAEb,aAAO,CAAC,KAAKC,SAAb;AACD;;;2BAEMJ,Q,EAAU;AAAA;;AACf,UAAI,KAAKI,SAAT,EAAoB;AAElB;AACD;;AACD,WAAKA,SAAL,GAAiB,IAAjB;AAEA,UAAMC,WAAW,GAAGC,MAAM,CAACC,MAAP,CAClB,EADkB,EAGlB,KAAKT,WAAL,CAAiBC,gBAHC,EAIlBC,QAAQ,CAACD,gBAJS,EAKlB;AACEE,QAAAA,WAAW,EAAED,QAAQ,CAACC,WADxB;AAGEO,QAAAA,MAAM,EAAE,iCAAqB,KAAKC,eAAL,CAAqBC,MAA1C;AAHV,OALkB,CAApB;AAcAC,MAAAA,MAAM,CAACC,sCAAP,CAA8CP,WAA9C,EAA2DQ,IAA3D,CAAgE,UAAAC,MAAM,EAAI;AAExE,YAAIA,MAAM,CAACC,OAAX,EAAoB;AAClB,UAAA,MAAI,CAACC,KAAL,CAAWF,MAAX;AACD,SAFD,MAEO;AACL,UAAA,MAAI,CAACG,KAAL,CAAWH,MAAX;AACD;;AAED,QAAA,MAAI,CAACV,SAAL,GAAiB,KAAjB;;AACA,QAAA,MAAI,CAACc,KAAL;AACD,OAVD;AAWD;;;EApD6CC,mB","sourcesContent":["import TestRunner from './test-runner';\nimport {getBoundingBoxInPage} from './utils';\n\nexport default class SnapshotTestRunner extends TestRunner {\n constructor(props) {\n super(props);\n\n // @ts-ignore\n this.testOptions.imageDiffOptions = {};\n }\n\n initTestCase(testCase) {\n super.initTestCase(testCase);\n if (!testCase.goldenImage) {\n throw new Error(`Test case ${testCase.name} does not have golden image`);\n }\n }\n\n shouldRender() {\n // wait for the current diffing to finish\n return !this.isDiffing;\n }\n\n assert(testCase) {\n if (this.isDiffing) {\n // Already performing diffing\n return;\n }\n this.isDiffing = true;\n\n const diffOptions = Object.assign(\n {},\n // @ts-ignore\n this.testOptions.imageDiffOptions,\n testCase.imageDiffOptions,\n {\n goldenImage: testCase.goldenImage,\n // @ts-ignore\n region: getBoundingBoxInPage(this._animationProps.canvas)\n }\n );\n\n // Take screenshot and compare\n // @ts-ignore\n window.browserTestDriver_captureAndDiffScreen(diffOptions).then(result => {\n // invoke user callback\n if (result.success) {\n this._pass(result);\n } else {\n this._fail(result);\n }\n\n this.isDiffing = false;\n this._next();\n });\n }\n}\n"],"file":"snapshot-test-runner.js"}
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
export type TestRunnerTestCase = {
|
|
2
|
-
name: string;
|
|
3
|
-
onInitialize: any;
|
|
4
|
-
onRender: any;
|
|
5
|
-
onFinalize: any;
|
|
6
|
-
};
|
|
7
|
-
|
|
8
|
-
export type TestRunnerOptions = {
|
|
9
|
-
// test lifecycle callback
|
|
10
|
-
onTestStart?: any;
|
|
11
|
-
onTestPass?: any;
|
|
12
|
-
onTestFail?: any;
|
|
13
|
-
|
|
14
|
-
// milliseconds to wait for each test case before aborting
|
|
15
|
-
timeout?: number;
|
|
16
|
-
};
|
|
17
|
-
|
|
18
|
-
export default class TestRunner {
|
|
19
|
-
readonly testOptions: object;
|
|
20
|
-
readonly _animationProps: object;
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
* @param props AnimationLoop props
|
|
24
|
-
*/
|
|
25
|
-
constructor(props?: TestRunnerOptions);
|
|
26
|
-
|
|
27
|
-
/**
|
|
28
|
-
* Add testCase(s)
|
|
29
|
-
*/
|
|
30
|
-
add(testCases: TestRunnerTestCase[]): this;
|
|
31
|
-
|
|
32
|
-
/**
|
|
33
|
-
* Returns a promise that resolves when all the test cases are done
|
|
34
|
-
*/
|
|
35
|
-
run(options?: object): Promise<void>;
|
|
36
|
-
|
|
37
|
-
/* Lifecycle methods for subclassing */
|
|
38
|
-
initTestCase(testCase);
|
|
39
|
-
shouldRender(animationProps);
|
|
40
|
-
assert(testCase);
|
|
41
|
-
|
|
42
|
-
_pass(result);
|
|
43
|
-
_fail(result);
|
|
44
|
-
_next();
|
|
45
|
-
}
|