@testim/testim-cli 3.223.0 → 3.226.0
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/commons/testimDesiredCapabilitiesBuilder.js +6 -1
- package/npm-shrinkwrap.json +142 -129
- package/package.json +1 -1
- package/reports/debugReporter.js +6 -5
- package/runner.js +1 -1
- package/runners/TestPlanRunner.js +4 -0
- package/services/gridService.js +26 -13
- package/services/gridService.test.js +6 -13
- package/testRunStatus.js +5 -3
- package/workers/BaseWorker.js +7 -7
- package/workers/BaseWorker.test.js +37 -3
- package/workers/WorkerExtensionSingleBrowser.js +2 -1
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
/* eslint-disable camelcase */
|
|
2
|
+
|
|
1
3
|
'use strict';
|
|
2
4
|
|
|
3
5
|
const crypto = require('crypto');
|
|
@@ -123,7 +125,7 @@ function readFileToBase64(fileLocation) {
|
|
|
123
125
|
return fs.readFileSync(fileLocation, { encoding: 'base64' });
|
|
124
126
|
}
|
|
125
127
|
|
|
126
|
-
function setCustomExtension(customExtensionLocalLocation
|
|
128
|
+
function setCustomExtension(customExtensionLocalLocation, extensions, lambdatestService) {
|
|
127
129
|
if (lambdatestService && lambdatestService.isLambdatestRun() && utils.isURL(customExtensionLocalLocation)) {
|
|
128
130
|
return;
|
|
129
131
|
}
|
|
@@ -176,6 +178,9 @@ function _buildChromiumOptions(opts, browserOptions, testRunConfig, customExtens
|
|
|
176
178
|
'profile.default_content_setting_values.automatic_downloads': CONTENT_SETTING.CONTENT_SETTING_ALLOW,
|
|
177
179
|
// disable pdf viewer
|
|
178
180
|
'plugins.always_open_pdf_externally': true,
|
|
181
|
+
// unintuitively stops download protection ("Dangerous file blocked")
|
|
182
|
+
// if needed in the future, consider adding --safebrowsing-disable-download-protection or --safebrowsing-disable-extension-blacklist to the chrome flags
|
|
183
|
+
'safebrowsing.enabled': true,
|
|
179
184
|
'profile.content_settings.exceptions.clipboard': {
|
|
180
185
|
'[*.],*': { last_modified: Date.now(), setting: 1 },
|
|
181
186
|
},
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@testim/testim-cli",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.226.0",
|
|
4
4
|
"lockfileVersion": 2,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "@testim/testim-cli",
|
|
9
|
-
"version": "3.
|
|
9
|
+
"version": "3.226.0",
|
|
10
10
|
"license": "Proprietary",
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"@applitools/eyes-sdk-core": "13.0.0",
|
|
@@ -103,9 +103,9 @@
|
|
|
103
103
|
}
|
|
104
104
|
},
|
|
105
105
|
"node_modules/@ampproject/remapping": {
|
|
106
|
-
"version": "2.1.
|
|
107
|
-
"resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.1.
|
|
108
|
-
"integrity": "sha512-
|
|
106
|
+
"version": "2.1.2",
|
|
107
|
+
"resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.1.2.tgz",
|
|
108
|
+
"integrity": "sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg==",
|
|
109
109
|
"dev": true,
|
|
110
110
|
"dependencies": {
|
|
111
111
|
"@jridgewell/trace-mapping": "^0.3.0"
|
|
@@ -500,20 +500,20 @@
|
|
|
500
500
|
}
|
|
501
501
|
},
|
|
502
502
|
"node_modules/@babel/core": {
|
|
503
|
-
"version": "7.17.
|
|
504
|
-
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.
|
|
505
|
-
"integrity": "sha512
|
|
503
|
+
"version": "7.17.5",
|
|
504
|
+
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.5.tgz",
|
|
505
|
+
"integrity": "sha512-/BBMw4EvjmyquN5O+t5eh0+YqB3XXJkYD2cjKpYtWOfFy4lQ4UozNSmxAcWT8r2XtZs0ewG+zrfsqeR15i1ajA==",
|
|
506
506
|
"dev": true,
|
|
507
507
|
"dependencies": {
|
|
508
|
-
"@ampproject/remapping": "^2.
|
|
508
|
+
"@ampproject/remapping": "^2.1.0",
|
|
509
509
|
"@babel/code-frame": "^7.16.7",
|
|
510
|
-
"@babel/generator": "^7.17.
|
|
510
|
+
"@babel/generator": "^7.17.3",
|
|
511
511
|
"@babel/helper-compilation-targets": "^7.16.7",
|
|
512
512
|
"@babel/helper-module-transforms": "^7.16.7",
|
|
513
513
|
"@babel/helpers": "^7.17.2",
|
|
514
|
-
"@babel/parser": "^7.17.
|
|
514
|
+
"@babel/parser": "^7.17.3",
|
|
515
515
|
"@babel/template": "^7.16.7",
|
|
516
|
-
"@babel/traverse": "^7.17.
|
|
516
|
+
"@babel/traverse": "^7.17.3",
|
|
517
517
|
"@babel/types": "^7.17.0",
|
|
518
518
|
"convert-source-map": "^1.7.0",
|
|
519
519
|
"debug": "^4.1.0",
|
|
@@ -548,9 +548,9 @@
|
|
|
548
548
|
}
|
|
549
549
|
},
|
|
550
550
|
"node_modules/@babel/generator": {
|
|
551
|
-
"version": "7.17.
|
|
552
|
-
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.
|
|
553
|
-
"integrity": "sha512
|
|
551
|
+
"version": "7.17.3",
|
|
552
|
+
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.3.tgz",
|
|
553
|
+
"integrity": "sha512-+R6Dctil/MgUsZsZAkYgK+ADNSZzJRRy0TvY65T71z/CR854xHQ1EweBYXdfT+HNeN7w0cSJJEzgxZMv40pxsg==",
|
|
554
554
|
"dev": true,
|
|
555
555
|
"dependencies": {
|
|
556
556
|
"@babel/types": "^7.17.0",
|
|
@@ -651,9 +651,9 @@
|
|
|
651
651
|
}
|
|
652
652
|
},
|
|
653
653
|
"node_modules/@babel/helper-module-transforms": {
|
|
654
|
-
"version": "7.
|
|
655
|
-
"resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.
|
|
656
|
-
"integrity": "sha512-
|
|
654
|
+
"version": "7.17.6",
|
|
655
|
+
"resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.6.tgz",
|
|
656
|
+
"integrity": "sha512-2ULmRdqoOMpdvkbT8jONrZML/XALfzxlb052bldftkicAUy8AxSCkD5trDPQcwHNmolcl7wP6ehNqMlyUw6AaA==",
|
|
657
657
|
"dev": true,
|
|
658
658
|
"dependencies": {
|
|
659
659
|
"@babel/helper-environment-visitor": "^7.16.7",
|
|
@@ -662,8 +662,8 @@
|
|
|
662
662
|
"@babel/helper-split-export-declaration": "^7.16.7",
|
|
663
663
|
"@babel/helper-validator-identifier": "^7.16.7",
|
|
664
664
|
"@babel/template": "^7.16.7",
|
|
665
|
-
"@babel/traverse": "^7.
|
|
666
|
-
"@babel/types": "^7.
|
|
665
|
+
"@babel/traverse": "^7.17.3",
|
|
666
|
+
"@babel/types": "^7.17.0"
|
|
667
667
|
},
|
|
668
668
|
"engines": {
|
|
669
669
|
"node": ">=6.9.0"
|
|
@@ -794,9 +794,9 @@
|
|
|
794
794
|
}
|
|
795
795
|
},
|
|
796
796
|
"node_modules/@babel/parser": {
|
|
797
|
-
"version": "7.17.
|
|
798
|
-
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.
|
|
799
|
-
"integrity": "sha512-
|
|
797
|
+
"version": "7.17.3",
|
|
798
|
+
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.3.tgz",
|
|
799
|
+
"integrity": "sha512-7yJPvPV+ESz2IUTPbOL+YkIGyCqOyNIzdguKQuJGnH7bg1WTIifuM21YqokFt/THWh1AkCRn9IgoykTRCBVpzA==",
|
|
800
800
|
"dev": true,
|
|
801
801
|
"bin": {
|
|
802
802
|
"parser": "bin/babel-parser.js"
|
|
@@ -831,18 +831,18 @@
|
|
|
831
831
|
}
|
|
832
832
|
},
|
|
833
833
|
"node_modules/@babel/traverse": {
|
|
834
|
-
"version": "7.17.
|
|
835
|
-
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.
|
|
836
|
-
"integrity": "sha512-
|
|
834
|
+
"version": "7.17.3",
|
|
835
|
+
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.3.tgz",
|
|
836
|
+
"integrity": "sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==",
|
|
837
837
|
"dev": true,
|
|
838
838
|
"dependencies": {
|
|
839
839
|
"@babel/code-frame": "^7.16.7",
|
|
840
|
-
"@babel/generator": "^7.17.
|
|
840
|
+
"@babel/generator": "^7.17.3",
|
|
841
841
|
"@babel/helper-environment-visitor": "^7.16.7",
|
|
842
842
|
"@babel/helper-function-name": "^7.16.7",
|
|
843
843
|
"@babel/helper-hoist-variables": "^7.16.7",
|
|
844
844
|
"@babel/helper-split-export-declaration": "^7.16.7",
|
|
845
|
-
"@babel/parser": "^7.17.
|
|
845
|
+
"@babel/parser": "^7.17.3",
|
|
846
846
|
"@babel/types": "^7.17.0",
|
|
847
847
|
"debug": "^4.1.0",
|
|
848
848
|
"globals": "^11.1.0"
|
|
@@ -1812,6 +1812,14 @@
|
|
|
1812
1812
|
"node": ">= 0.6"
|
|
1813
1813
|
}
|
|
1814
1814
|
},
|
|
1815
|
+
"node_modules/accepts/node_modules/mime-db": {
|
|
1816
|
+
"version": "1.51.0",
|
|
1817
|
+
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz",
|
|
1818
|
+
"integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==",
|
|
1819
|
+
"engines": {
|
|
1820
|
+
"node": ">= 0.6"
|
|
1821
|
+
}
|
|
1822
|
+
},
|
|
1815
1823
|
"node_modules/accepts/node_modules/mime-types": {
|
|
1816
1824
|
"version": "2.1.34",
|
|
1817
1825
|
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz",
|
|
@@ -1874,9 +1882,9 @@
|
|
|
1874
1882
|
}
|
|
1875
1883
|
},
|
|
1876
1884
|
"node_modules/agentkeepalive": {
|
|
1877
|
-
"version": "4.2.
|
|
1878
|
-
"resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.
|
|
1879
|
-
"integrity": "sha512-
|
|
1885
|
+
"version": "4.2.1",
|
|
1886
|
+
"resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz",
|
|
1887
|
+
"integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==",
|
|
1880
1888
|
"dependencies": {
|
|
1881
1889
|
"debug": "^4.1.0",
|
|
1882
1890
|
"depd": "^1.1.2",
|
|
@@ -2899,15 +2907,15 @@
|
|
|
2899
2907
|
"dev": true
|
|
2900
2908
|
},
|
|
2901
2909
|
"node_modules/browserslist": {
|
|
2902
|
-
"version": "4.19.
|
|
2903
|
-
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.19.
|
|
2904
|
-
"integrity": "sha512-
|
|
2910
|
+
"version": "4.19.3",
|
|
2911
|
+
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.19.3.tgz",
|
|
2912
|
+
"integrity": "sha512-XK3X4xtKJ+Txj8G5c30B4gsm71s69lqXlkYui4s6EkKxuv49qjYlY6oVd+IFJ73d4YymtM3+djvvt/R/iJwwDg==",
|
|
2905
2913
|
"dev": true,
|
|
2906
2914
|
"dependencies": {
|
|
2907
|
-
"caniuse-lite": "^1.0.
|
|
2908
|
-
"electron-to-chromium": "^1.4.
|
|
2915
|
+
"caniuse-lite": "^1.0.30001312",
|
|
2916
|
+
"electron-to-chromium": "^1.4.71",
|
|
2909
2917
|
"escalade": "^3.1.1",
|
|
2910
|
-
"node-releases": "^2.0.
|
|
2918
|
+
"node-releases": "^2.0.2",
|
|
2911
2919
|
"picocolors": "^1.0.0"
|
|
2912
2920
|
},
|
|
2913
2921
|
"bin": {
|
|
@@ -4591,14 +4599,14 @@
|
|
|
4591
4599
|
}
|
|
4592
4600
|
},
|
|
4593
4601
|
"node_modules/degenerator": {
|
|
4594
|
-
"version": "3.0.
|
|
4595
|
-
"resolved": "https://registry.npmjs.org/degenerator/-/degenerator-3.0.
|
|
4596
|
-
"integrity": "sha512-
|
|
4602
|
+
"version": "3.0.2",
|
|
4603
|
+
"resolved": "https://registry.npmjs.org/degenerator/-/degenerator-3.0.2.tgz",
|
|
4604
|
+
"integrity": "sha512-c0mef3SNQo56t6urUU6tdQAs+ThoD0o9B9MJ8HEt7NQcGEILCRFqQb7ZbP9JAv+QF1Ky5plydhMR/IrqWDm+TQ==",
|
|
4597
4605
|
"dependencies": {
|
|
4598
4606
|
"ast-types": "^0.13.2",
|
|
4599
4607
|
"escodegen": "^1.8.1",
|
|
4600
4608
|
"esprima": "^4.0.0",
|
|
4601
|
-
"vm2": "^3.9.
|
|
4609
|
+
"vm2": "^3.9.8"
|
|
4602
4610
|
},
|
|
4603
4611
|
"engines": {
|
|
4604
4612
|
"node": ">= 6"
|
|
@@ -4831,9 +4839,9 @@
|
|
|
4831
4839
|
}
|
|
4832
4840
|
},
|
|
4833
4841
|
"node_modules/electron-to-chromium": {
|
|
4834
|
-
"version": "1.4.
|
|
4835
|
-
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.
|
|
4836
|
-
"integrity": "sha512-
|
|
4842
|
+
"version": "1.4.73",
|
|
4843
|
+
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.73.tgz",
|
|
4844
|
+
"integrity": "sha512-RlCffXkE/LliqfA5m29+dVDPB2r72y2D2egMMfIy3Le8ODrxjuZNVo4NIC2yPL01N4xb4nZQLwzi6Z5tGIGLnA==",
|
|
4837
4845
|
"dev": true
|
|
4838
4846
|
},
|
|
4839
4847
|
"node_modules/emoji-regex": {
|
|
@@ -5773,9 +5781,9 @@
|
|
|
5773
5781
|
"integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw=="
|
|
5774
5782
|
},
|
|
5775
5783
|
"node_modules/follow-redirects": {
|
|
5776
|
-
"version": "1.14.
|
|
5777
|
-
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.
|
|
5778
|
-
"integrity": "sha512-
|
|
5784
|
+
"version": "1.14.9",
|
|
5785
|
+
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.9.tgz",
|
|
5786
|
+
"integrity": "sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w==",
|
|
5779
5787
|
"funding": [
|
|
5780
5788
|
{
|
|
5781
5789
|
"type": "individual",
|
|
@@ -6353,9 +6361,9 @@
|
|
|
6353
6361
|
}
|
|
6354
6362
|
},
|
|
6355
6363
|
"node_modules/globule/node_modules/minimatch": {
|
|
6356
|
-
"version": "3.0.
|
|
6357
|
-
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.
|
|
6358
|
-
"integrity": "sha512-
|
|
6364
|
+
"version": "3.0.8",
|
|
6365
|
+
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz",
|
|
6366
|
+
"integrity": "sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==",
|
|
6359
6367
|
"dependencies": {
|
|
6360
6368
|
"brace-expansion": "^1.1.7"
|
|
6361
6369
|
},
|
|
@@ -8404,9 +8412,9 @@
|
|
|
8404
8412
|
}
|
|
8405
8413
|
},
|
|
8406
8414
|
"node_modules/marky": {
|
|
8407
|
-
"version": "1.2.
|
|
8408
|
-
"resolved": "https://registry.npmjs.org/marky/-/marky-1.2.
|
|
8409
|
-
"integrity": "sha512-
|
|
8415
|
+
"version": "1.2.4",
|
|
8416
|
+
"resolved": "https://registry.npmjs.org/marky/-/marky-1.2.4.tgz",
|
|
8417
|
+
"integrity": "sha512-zd2/GiSn6U3/jeFVZ0J9CA1LzQ8RfIVvXkb/U0swFHF/zT+dVohTAWjmo2DcIuofmIIIROlwTbd+shSeXmxr0w=="
|
|
8410
8418
|
},
|
|
8411
8419
|
"node_modules/matchdep": {
|
|
8412
8420
|
"version": "2.0.0",
|
|
@@ -8615,9 +8623,9 @@
|
|
|
8615
8623
|
}
|
|
8616
8624
|
},
|
|
8617
8625
|
"node_modules/mime-db": {
|
|
8618
|
-
"version": "1.
|
|
8619
|
-
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.
|
|
8620
|
-
"integrity": "sha512-
|
|
8626
|
+
"version": "1.52.0",
|
|
8627
|
+
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
|
|
8628
|
+
"integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
|
|
8621
8629
|
"engines": {
|
|
8622
8630
|
"node": ">= 0.6"
|
|
8623
8631
|
}
|
|
@@ -8658,9 +8666,9 @@
|
|
|
8658
8666
|
}
|
|
8659
8667
|
},
|
|
8660
8668
|
"node_modules/minimatch": {
|
|
8661
|
-
"version": "3.1.
|
|
8662
|
-
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.
|
|
8663
|
-
"integrity": "sha512-
|
|
8669
|
+
"version": "3.1.2",
|
|
8670
|
+
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
|
|
8671
|
+
"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
|
|
8664
8672
|
"dependencies": {
|
|
8665
8673
|
"brace-expansion": "^1.1.7"
|
|
8666
8674
|
},
|
|
@@ -14546,9 +14554,9 @@
|
|
|
14546
14554
|
}
|
|
14547
14555
|
},
|
|
14548
14556
|
"node_modules/socket.io-parser": {
|
|
14549
|
-
"version": "4.1.
|
|
14550
|
-
"resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.1.
|
|
14551
|
-
"integrity": "sha512-
|
|
14557
|
+
"version": "4.1.2",
|
|
14558
|
+
"resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.1.2.tgz",
|
|
14559
|
+
"integrity": "sha512-j3kk71QLJuyQ/hh5F/L2t1goqzdTL0gvDzuhTuNSwihfuFUrcSji0qFZmJJPtG6Rmug153eOPsUizeirf1IIog==",
|
|
14552
14560
|
"dependencies": {
|
|
14553
14561
|
"@socket.io/component-emitter": "~3.0.0",
|
|
14554
14562
|
"debug": "~4.3.1"
|
|
@@ -15012,7 +15020,7 @@
|
|
|
15012
15020
|
"version": "3.8.3",
|
|
15013
15021
|
"resolved": "https://registry.npmjs.org/superagent/-/superagent-3.8.3.tgz",
|
|
15014
15022
|
"integrity": "sha512-GLQtLMCoEIK4eDv6OGtkOoSMt3D+oq0y3dsxMuYuDvaNUvuT8eFBuLmfR0iYYzHC1e8hpzC6ZsxbuP6DIalMFA==",
|
|
15015
|
-
"deprecated": "Please upgrade to v7.0.2+ of superagent. We have fixed numerous issues with streams, form-data, attach(), filesystem errors not bubbling up (ENOENT on attach()), and all tests are now passing. See the releases tab for more information at <https://github.com/visionmedia/superagent/releases>.
|
|
15023
|
+
"deprecated": "Please upgrade to v7.0.2+ of superagent. We have fixed numerous issues with streams, form-data, attach(), filesystem errors not bubbling up (ENOENT on attach()), and all tests are now passing. See the releases tab for more information at <https://github.com/visionmedia/superagent/releases>.",
|
|
15016
15024
|
"dependencies": {
|
|
15017
15025
|
"component-emitter": "^1.2.0",
|
|
15018
15026
|
"cookiejar": "^2.1.0",
|
|
@@ -16135,9 +16143,9 @@
|
|
|
16135
16143
|
}
|
|
16136
16144
|
},
|
|
16137
16145
|
"node_modules/vm2": {
|
|
16138
|
-
"version": "3.9.
|
|
16139
|
-
"resolved": "https://registry.npmjs.org/vm2/-/vm2-3.9.
|
|
16140
|
-
"integrity": "sha512-
|
|
16146
|
+
"version": "3.9.9",
|
|
16147
|
+
"resolved": "https://registry.npmjs.org/vm2/-/vm2-3.9.9.tgz",
|
|
16148
|
+
"integrity": "sha512-xwTm7NLh/uOjARRBs8/95H0e8fT3Ukw5D/JJWhxMbhKzNh1Nu981jQKvkep9iKYNxzlVrdzD0mlBGkDKZWprlw==",
|
|
16141
16149
|
"dependencies": {
|
|
16142
16150
|
"acorn": "^8.7.0",
|
|
16143
16151
|
"acorn-walk": "^8.2.0"
|
|
@@ -16732,9 +16740,9 @@
|
|
|
16732
16740
|
},
|
|
16733
16741
|
"dependencies": {
|
|
16734
16742
|
"@ampproject/remapping": {
|
|
16735
|
-
"version": "2.1.
|
|
16736
|
-
"resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.1.
|
|
16737
|
-
"integrity": "sha512-
|
|
16743
|
+
"version": "2.1.2",
|
|
16744
|
+
"resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.1.2.tgz",
|
|
16745
|
+
"integrity": "sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg==",
|
|
16738
16746
|
"dev": true,
|
|
16739
16747
|
"requires": {
|
|
16740
16748
|
"@jridgewell/trace-mapping": "^0.3.0"
|
|
@@ -17045,20 +17053,20 @@
|
|
|
17045
17053
|
"dev": true
|
|
17046
17054
|
},
|
|
17047
17055
|
"@babel/core": {
|
|
17048
|
-
"version": "7.17.
|
|
17049
|
-
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.
|
|
17050
|
-
"integrity": "sha512
|
|
17056
|
+
"version": "7.17.5",
|
|
17057
|
+
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.5.tgz",
|
|
17058
|
+
"integrity": "sha512-/BBMw4EvjmyquN5O+t5eh0+YqB3XXJkYD2cjKpYtWOfFy4lQ4UozNSmxAcWT8r2XtZs0ewG+zrfsqeR15i1ajA==",
|
|
17051
17059
|
"dev": true,
|
|
17052
17060
|
"requires": {
|
|
17053
|
-
"@ampproject/remapping": "^2.
|
|
17061
|
+
"@ampproject/remapping": "^2.1.0",
|
|
17054
17062
|
"@babel/code-frame": "^7.16.7",
|
|
17055
|
-
"@babel/generator": "^7.17.
|
|
17063
|
+
"@babel/generator": "^7.17.3",
|
|
17056
17064
|
"@babel/helper-compilation-targets": "^7.16.7",
|
|
17057
17065
|
"@babel/helper-module-transforms": "^7.16.7",
|
|
17058
17066
|
"@babel/helpers": "^7.17.2",
|
|
17059
|
-
"@babel/parser": "^7.17.
|
|
17067
|
+
"@babel/parser": "^7.17.3",
|
|
17060
17068
|
"@babel/template": "^7.16.7",
|
|
17061
|
-
"@babel/traverse": "^7.17.
|
|
17069
|
+
"@babel/traverse": "^7.17.3",
|
|
17062
17070
|
"@babel/types": "^7.17.0",
|
|
17063
17071
|
"convert-source-map": "^1.7.0",
|
|
17064
17072
|
"debug": "^4.1.0",
|
|
@@ -17085,9 +17093,9 @@
|
|
|
17085
17093
|
}
|
|
17086
17094
|
},
|
|
17087
17095
|
"@babel/generator": {
|
|
17088
|
-
"version": "7.17.
|
|
17089
|
-
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.
|
|
17090
|
-
"integrity": "sha512
|
|
17096
|
+
"version": "7.17.3",
|
|
17097
|
+
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.3.tgz",
|
|
17098
|
+
"integrity": "sha512-+R6Dctil/MgUsZsZAkYgK+ADNSZzJRRy0TvY65T71z/CR854xHQ1EweBYXdfT+HNeN7w0cSJJEzgxZMv40pxsg==",
|
|
17091
17099
|
"dev": true,
|
|
17092
17100
|
"requires": {
|
|
17093
17101
|
"@babel/types": "^7.17.0",
|
|
@@ -17163,9 +17171,9 @@
|
|
|
17163
17171
|
}
|
|
17164
17172
|
},
|
|
17165
17173
|
"@babel/helper-module-transforms": {
|
|
17166
|
-
"version": "7.
|
|
17167
|
-
"resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.
|
|
17168
|
-
"integrity": "sha512-
|
|
17174
|
+
"version": "7.17.6",
|
|
17175
|
+
"resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.6.tgz",
|
|
17176
|
+
"integrity": "sha512-2ULmRdqoOMpdvkbT8jONrZML/XALfzxlb052bldftkicAUy8AxSCkD5trDPQcwHNmolcl7wP6ehNqMlyUw6AaA==",
|
|
17169
17177
|
"dev": true,
|
|
17170
17178
|
"requires": {
|
|
17171
17179
|
"@babel/helper-environment-visitor": "^7.16.7",
|
|
@@ -17174,8 +17182,8 @@
|
|
|
17174
17182
|
"@babel/helper-split-export-declaration": "^7.16.7",
|
|
17175
17183
|
"@babel/helper-validator-identifier": "^7.16.7",
|
|
17176
17184
|
"@babel/template": "^7.16.7",
|
|
17177
|
-
"@babel/traverse": "^7.
|
|
17178
|
-
"@babel/types": "^7.
|
|
17185
|
+
"@babel/traverse": "^7.17.3",
|
|
17186
|
+
"@babel/types": "^7.17.0"
|
|
17179
17187
|
}
|
|
17180
17188
|
},
|
|
17181
17189
|
"@babel/helper-simple-access": {
|
|
@@ -17275,9 +17283,9 @@
|
|
|
17275
17283
|
}
|
|
17276
17284
|
},
|
|
17277
17285
|
"@babel/parser": {
|
|
17278
|
-
"version": "7.17.
|
|
17279
|
-
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.
|
|
17280
|
-
"integrity": "sha512-
|
|
17286
|
+
"version": "7.17.3",
|
|
17287
|
+
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.3.tgz",
|
|
17288
|
+
"integrity": "sha512-7yJPvPV+ESz2IUTPbOL+YkIGyCqOyNIzdguKQuJGnH7bg1WTIifuM21YqokFt/THWh1AkCRn9IgoykTRCBVpzA==",
|
|
17281
17289
|
"dev": true
|
|
17282
17290
|
},
|
|
17283
17291
|
"@babel/runtime": {
|
|
@@ -17300,18 +17308,18 @@
|
|
|
17300
17308
|
}
|
|
17301
17309
|
},
|
|
17302
17310
|
"@babel/traverse": {
|
|
17303
|
-
"version": "7.17.
|
|
17304
|
-
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.
|
|
17305
|
-
"integrity": "sha512-
|
|
17311
|
+
"version": "7.17.3",
|
|
17312
|
+
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.3.tgz",
|
|
17313
|
+
"integrity": "sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==",
|
|
17306
17314
|
"dev": true,
|
|
17307
17315
|
"requires": {
|
|
17308
17316
|
"@babel/code-frame": "^7.16.7",
|
|
17309
|
-
"@babel/generator": "^7.17.
|
|
17317
|
+
"@babel/generator": "^7.17.3",
|
|
17310
17318
|
"@babel/helper-environment-visitor": "^7.16.7",
|
|
17311
17319
|
"@babel/helper-function-name": "^7.16.7",
|
|
17312
17320
|
"@babel/helper-hoist-variables": "^7.16.7",
|
|
17313
17321
|
"@babel/helper-split-export-declaration": "^7.16.7",
|
|
17314
|
-
"@babel/parser": "^7.17.
|
|
17322
|
+
"@babel/parser": "^7.17.3",
|
|
17315
17323
|
"@babel/types": "^7.17.0",
|
|
17316
17324
|
"debug": "^4.1.0",
|
|
17317
17325
|
"globals": "^11.1.0"
|
|
@@ -18099,6 +18107,11 @@
|
|
|
18099
18107
|
"negotiator": "0.6.3"
|
|
18100
18108
|
},
|
|
18101
18109
|
"dependencies": {
|
|
18110
|
+
"mime-db": {
|
|
18111
|
+
"version": "1.51.0",
|
|
18112
|
+
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz",
|
|
18113
|
+
"integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g=="
|
|
18114
|
+
},
|
|
18102
18115
|
"mime-types": {
|
|
18103
18116
|
"version": "2.1.34",
|
|
18104
18117
|
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz",
|
|
@@ -18144,9 +18157,9 @@
|
|
|
18144
18157
|
}
|
|
18145
18158
|
},
|
|
18146
18159
|
"agentkeepalive": {
|
|
18147
|
-
"version": "4.2.
|
|
18148
|
-
"resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.
|
|
18149
|
-
"integrity": "sha512-
|
|
18160
|
+
"version": "4.2.1",
|
|
18161
|
+
"resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz",
|
|
18162
|
+
"integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==",
|
|
18150
18163
|
"requires": {
|
|
18151
18164
|
"debug": "^4.1.0",
|
|
18152
18165
|
"depd": "^1.1.2",
|
|
@@ -18973,15 +18986,15 @@
|
|
|
18973
18986
|
"dev": true
|
|
18974
18987
|
},
|
|
18975
18988
|
"browserslist": {
|
|
18976
|
-
"version": "4.19.
|
|
18977
|
-
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.19.
|
|
18978
|
-
"integrity": "sha512-
|
|
18989
|
+
"version": "4.19.3",
|
|
18990
|
+
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.19.3.tgz",
|
|
18991
|
+
"integrity": "sha512-XK3X4xtKJ+Txj8G5c30B4gsm71s69lqXlkYui4s6EkKxuv49qjYlY6oVd+IFJ73d4YymtM3+djvvt/R/iJwwDg==",
|
|
18979
18992
|
"dev": true,
|
|
18980
18993
|
"requires": {
|
|
18981
|
-
"caniuse-lite": "^1.0.
|
|
18982
|
-
"electron-to-chromium": "^1.4.
|
|
18994
|
+
"caniuse-lite": "^1.0.30001312",
|
|
18995
|
+
"electron-to-chromium": "^1.4.71",
|
|
18983
18996
|
"escalade": "^3.1.1",
|
|
18984
|
-
"node-releases": "^2.0.
|
|
18997
|
+
"node-releases": "^2.0.2",
|
|
18985
18998
|
"picocolors": "^1.0.0"
|
|
18986
18999
|
}
|
|
18987
19000
|
},
|
|
@@ -20353,14 +20366,14 @@
|
|
|
20353
20366
|
}
|
|
20354
20367
|
},
|
|
20355
20368
|
"degenerator": {
|
|
20356
|
-
"version": "3.0.
|
|
20357
|
-
"resolved": "https://registry.npmjs.org/degenerator/-/degenerator-3.0.
|
|
20358
|
-
"integrity": "sha512-
|
|
20369
|
+
"version": "3.0.2",
|
|
20370
|
+
"resolved": "https://registry.npmjs.org/degenerator/-/degenerator-3.0.2.tgz",
|
|
20371
|
+
"integrity": "sha512-c0mef3SNQo56t6urUU6tdQAs+ThoD0o9B9MJ8HEt7NQcGEILCRFqQb7ZbP9JAv+QF1Ky5plydhMR/IrqWDm+TQ==",
|
|
20359
20372
|
"requires": {
|
|
20360
20373
|
"ast-types": "^0.13.2",
|
|
20361
20374
|
"escodegen": "^1.8.1",
|
|
20362
20375
|
"esprima": "^4.0.0",
|
|
20363
|
-
"vm2": "^3.9.
|
|
20376
|
+
"vm2": "^3.9.8"
|
|
20364
20377
|
},
|
|
20365
20378
|
"dependencies": {
|
|
20366
20379
|
"escodegen": {
|
|
@@ -20550,9 +20563,9 @@
|
|
|
20550
20563
|
}
|
|
20551
20564
|
},
|
|
20552
20565
|
"electron-to-chromium": {
|
|
20553
|
-
"version": "1.4.
|
|
20554
|
-
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.
|
|
20555
|
-
"integrity": "sha512-
|
|
20566
|
+
"version": "1.4.73",
|
|
20567
|
+
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.73.tgz",
|
|
20568
|
+
"integrity": "sha512-RlCffXkE/LliqfA5m29+dVDPB2r72y2D2egMMfIy3Le8ODrxjuZNVo4NIC2yPL01N4xb4nZQLwzi6Z5tGIGLnA==",
|
|
20556
20569
|
"dev": true
|
|
20557
20570
|
},
|
|
20558
20571
|
"emoji-regex": {
|
|
@@ -21332,9 +21345,9 @@
|
|
|
21332
21345
|
"integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw=="
|
|
21333
21346
|
},
|
|
21334
21347
|
"follow-redirects": {
|
|
21335
|
-
"version": "1.14.
|
|
21336
|
-
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.
|
|
21337
|
-
"integrity": "sha512-
|
|
21348
|
+
"version": "1.14.9",
|
|
21349
|
+
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.9.tgz",
|
|
21350
|
+
"integrity": "sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w=="
|
|
21338
21351
|
},
|
|
21339
21352
|
"for-in": {
|
|
21340
21353
|
"version": "1.0.2",
|
|
@@ -21785,9 +21798,9 @@
|
|
|
21785
21798
|
},
|
|
21786
21799
|
"dependencies": {
|
|
21787
21800
|
"minimatch": {
|
|
21788
|
-
"version": "3.0.
|
|
21789
|
-
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.
|
|
21790
|
-
"integrity": "sha512-
|
|
21801
|
+
"version": "3.0.8",
|
|
21802
|
+
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz",
|
|
21803
|
+
"integrity": "sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==",
|
|
21791
21804
|
"requires": {
|
|
21792
21805
|
"brace-expansion": "^1.1.7"
|
|
21793
21806
|
}
|
|
@@ -23405,9 +23418,9 @@
|
|
|
23405
23418
|
}
|
|
23406
23419
|
},
|
|
23407
23420
|
"marky": {
|
|
23408
|
-
"version": "1.2.
|
|
23409
|
-
"resolved": "https://registry.npmjs.org/marky/-/marky-1.2.
|
|
23410
|
-
"integrity": "sha512-
|
|
23421
|
+
"version": "1.2.4",
|
|
23422
|
+
"resolved": "https://registry.npmjs.org/marky/-/marky-1.2.4.tgz",
|
|
23423
|
+
"integrity": "sha512-zd2/GiSn6U3/jeFVZ0J9CA1LzQ8RfIVvXkb/U0swFHF/zT+dVohTAWjmo2DcIuofmIIIROlwTbd+shSeXmxr0w=="
|
|
23411
23424
|
},
|
|
23412
23425
|
"matchdep": {
|
|
23413
23426
|
"version": "2.0.0",
|
|
@@ -23580,9 +23593,9 @@
|
|
|
23580
23593
|
"integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="
|
|
23581
23594
|
},
|
|
23582
23595
|
"mime-db": {
|
|
23583
|
-
"version": "1.
|
|
23584
|
-
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.
|
|
23585
|
-
"integrity": "sha512-
|
|
23596
|
+
"version": "1.52.0",
|
|
23597
|
+
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
|
|
23598
|
+
"integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="
|
|
23586
23599
|
},
|
|
23587
23600
|
"mime-types": {
|
|
23588
23601
|
"version": "2.1.27",
|
|
@@ -23613,9 +23626,9 @@
|
|
|
23613
23626
|
}
|
|
23614
23627
|
},
|
|
23615
23628
|
"minimatch": {
|
|
23616
|
-
"version": "3.1.
|
|
23617
|
-
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.
|
|
23618
|
-
"integrity": "sha512-
|
|
23629
|
+
"version": "3.1.2",
|
|
23630
|
+
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
|
|
23631
|
+
"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
|
|
23619
23632
|
"requires": {
|
|
23620
23633
|
"brace-expansion": "^1.1.7"
|
|
23621
23634
|
}
|
|
@@ -28001,9 +28014,9 @@
|
|
|
28001
28014
|
}
|
|
28002
28015
|
},
|
|
28003
28016
|
"socket.io-parser": {
|
|
28004
|
-
"version": "4.1.
|
|
28005
|
-
"resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.1.
|
|
28006
|
-
"integrity": "sha512-
|
|
28017
|
+
"version": "4.1.2",
|
|
28018
|
+
"resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.1.2.tgz",
|
|
28019
|
+
"integrity": "sha512-j3kk71QLJuyQ/hh5F/L2t1goqzdTL0gvDzuhTuNSwihfuFUrcSji0qFZmJJPtG6Rmug153eOPsUizeirf1IIog==",
|
|
28007
28020
|
"requires": {
|
|
28008
28021
|
"@socket.io/component-emitter": "~3.0.0",
|
|
28009
28022
|
"debug": "~4.3.1"
|
|
@@ -29284,9 +29297,9 @@
|
|
|
29284
29297
|
}
|
|
29285
29298
|
},
|
|
29286
29299
|
"vm2": {
|
|
29287
|
-
"version": "3.9.
|
|
29288
|
-
"resolved": "https://registry.npmjs.org/vm2/-/vm2-3.9.
|
|
29289
|
-
"integrity": "sha512-
|
|
29300
|
+
"version": "3.9.9",
|
|
29301
|
+
"resolved": "https://registry.npmjs.org/vm2/-/vm2-3.9.9.tgz",
|
|
29302
|
+
"integrity": "sha512-xwTm7NLh/uOjARRBs8/95H0e8fT3Ukw5D/JJWhxMbhKzNh1Nu981jQKvkep9iKYNxzlVrdzD0mlBGkDKZWprlw==",
|
|
29290
29303
|
"requires": {
|
|
29291
29304
|
"acorn": "^8.7.0",
|
|
29292
29305
|
"acorn-walk": "^8.2.0"
|
package/package.json
CHANGED
package/reports/debugReporter.js
CHANGED
|
@@ -25,11 +25,12 @@ DebugReporter.prototype.onTestStarted = function (test, workerId) {
|
|
|
25
25
|
};
|
|
26
26
|
|
|
27
27
|
DebugReporter.prototype.onTestFinished = function (test, workerId) {
|
|
28
|
-
const
|
|
29
|
-
const
|
|
30
|
-
const
|
|
31
|
-
const
|
|
32
|
-
const
|
|
28
|
+
const gridData = this.options.gridData || {};
|
|
29
|
+
const provider = gridData.provider;
|
|
30
|
+
const host = gridData.host;
|
|
31
|
+
const gridId = gridData.gridId;
|
|
32
|
+
const gridType = gridData.type;
|
|
33
|
+
const failedGetBrowserAttempts = gridData.failedGetBrowserAttempts;
|
|
33
34
|
logger.info('Test Finished', {
|
|
34
35
|
testId: test.testId,
|
|
35
36
|
testName: test.name,
|
package/runner.js
CHANGED
|
@@ -223,7 +223,7 @@ function runRunner(options, customExtensionLocalLocation) {
|
|
|
223
223
|
}
|
|
224
224
|
|
|
225
225
|
function showFreeGridRunWarningIfNeeded(options) {
|
|
226
|
-
if (featureAvailabilityService.shouldShowFreeGridRunWarning(options.gridData.type)) {
|
|
226
|
+
if (featureAvailabilityService.shouldShowFreeGridRunWarning(options.gridData && options.gridData.type)) {
|
|
227
227
|
const CYAN = '\x1b[36m';
|
|
228
228
|
const UNDERSCORE = '\x1b[4m';
|
|
229
229
|
const RESET = '\x1b[0m';
|
|
@@ -11,6 +11,7 @@ const testimServicesApi = require('../commons/testimServicesApi');
|
|
|
11
11
|
const testimCustomToken = require('../commons/testimCustomToken');
|
|
12
12
|
const TestRunStatus = require('../testRunStatus');
|
|
13
13
|
const analyticsService = require('../services/analyticsService');
|
|
14
|
+
const gridService = require('../services/gridService');
|
|
14
15
|
const branchService = require('../services/branchService');
|
|
15
16
|
const config = require('../commons/config');
|
|
16
17
|
const ParallelWorkerManager = require('./ParallelWorkerManager');
|
|
@@ -258,6 +259,9 @@ class TestPlanRunner {
|
|
|
258
259
|
delete tpOptions.gridId;
|
|
259
260
|
}
|
|
260
261
|
|
|
262
|
+
|
|
263
|
+
tpOptions.gridData = await gridService.getTestPlanGridData(options, testPlan);
|
|
264
|
+
|
|
261
265
|
const testPlanName = tpOptions.overrideExecutionName || testPlan.name;
|
|
262
266
|
return await Promise.all(testPlansData[id].map(async testPlanTests => {
|
|
263
267
|
const res = await this.runTestPlan(testPlanTests.beforeTests, testPlanTests.tests, testPlanTests.afterTests, tpOptions, testPlanName, id, branchToUse);
|
package/services/gridService.js
CHANGED
|
@@ -235,16 +235,27 @@ function getOptionGrid(options) {
|
|
|
235
235
|
return Promise.resolve({ host, port, path, protocol, type, user, key });
|
|
236
236
|
}
|
|
237
237
|
|
|
238
|
-
async function getTestPlanGridData(options) {
|
|
239
|
-
const
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
}
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
238
|
+
async function getTestPlanGridData(options, testPlanData) {
|
|
239
|
+
const companyId = options.company.companyId;
|
|
240
|
+
try {
|
|
241
|
+
return await getGridDataByGridId(companyId, testPlanData.gridId, options.allGrids);
|
|
242
|
+
} catch (err) {
|
|
243
|
+
if (err instanceof ArgError) {
|
|
244
|
+
// this is a fallback to an old behavior that is wrong,
|
|
245
|
+
// we should remove it in the future
|
|
246
|
+
const testPlanDatas = await servicesApi.getTestPlan(options.project, options.testPlan);
|
|
247
|
+
if (testPlanDatas.length === 0) {
|
|
248
|
+
throw new ArgError(`no test plan to run ${options.testPlan}`);
|
|
249
|
+
}
|
|
250
|
+
const testPlanGrids = testPlanDatas.map(d => options.allGrids.find(grid => grid._id === d.gridId));
|
|
251
|
+
if (testPlanGrids.includes(undefined)) {
|
|
252
|
+
throw new ArgError('failed to find one of the test plan defined grid');
|
|
253
|
+
}
|
|
254
|
+
logger.warn('getTestPlanGridData used fallback and might cause test plans run on a unintended grid', { companyId });
|
|
255
|
+
return getSerializableObject(_.first(testPlanGrids));
|
|
256
|
+
}
|
|
257
|
+
throw err;
|
|
246
258
|
}
|
|
247
|
-
return getSerializableObject(_.first(testPlanGrids));
|
|
248
259
|
}
|
|
249
260
|
|
|
250
261
|
async function getGridData(options) {
|
|
@@ -253,10 +264,10 @@ async function getGridData(options) {
|
|
|
253
264
|
host, useLocalChromeDriver, useChromeLauncher, gridId, grid,
|
|
254
265
|
} = options;
|
|
255
266
|
if (useLocalChromeDriver || useChromeLauncher) {
|
|
256
|
-
return
|
|
267
|
+
return { mode: 'local' };
|
|
257
268
|
}
|
|
258
269
|
if (host) {
|
|
259
|
-
return
|
|
270
|
+
return getOptionGrid(options);
|
|
260
271
|
}
|
|
261
272
|
const companyId = company.companyId;
|
|
262
273
|
if (gridId) {
|
|
@@ -266,7 +277,8 @@ async function getGridData(options) {
|
|
|
266
277
|
return getGridDataByGridName(companyId, grid, allGrids);
|
|
267
278
|
}
|
|
268
279
|
if (hasTestPlanFlag(options)) {
|
|
269
|
-
|
|
280
|
+
logger.info('skipping getting grid, as it is set on test plan', { companyId });
|
|
281
|
+
return undefined;
|
|
270
282
|
}
|
|
271
283
|
|
|
272
284
|
throw new GridError('Missing host or grid configuration');
|
|
@@ -300,7 +312,7 @@ async function _getGridSlot(browser, executionId, testResultId, onGridSlot, opti
|
|
|
300
312
|
return gridInfo;
|
|
301
313
|
}
|
|
302
314
|
|
|
303
|
-
const handleHybridOrVendorIfNeeded = async (runnerOptions = { }, gridInfo = {}, testRunConfig = {}, lambdatestService, retryConfig = {}) => {
|
|
315
|
+
const handleHybridOrVendorIfNeeded = async (runnerOptions = { }, gridInfo = {}, testRunConfig = {}, lambdatestService = {}, retryConfig = {}) => {
|
|
304
316
|
const { company = {} } = runnerOptions;
|
|
305
317
|
const companyId = company.companyId;
|
|
306
318
|
const { gridId, type } = gridInfo;
|
|
@@ -337,6 +349,7 @@ module.exports = {
|
|
|
337
349
|
getGridSlot,
|
|
338
350
|
releaseGridSlot,
|
|
339
351
|
getGridData,
|
|
352
|
+
getTestPlanGridData,
|
|
340
353
|
addItemToGridCache,
|
|
341
354
|
keepAlive: {
|
|
342
355
|
start: startKeepAlive,
|
|
@@ -150,21 +150,14 @@ describe('gridService', () => {
|
|
|
150
150
|
.to.eventually.be.rejectedWith('Failed to find grid name: gridName');
|
|
151
151
|
});
|
|
152
152
|
|
|
153
|
-
it('should
|
|
154
|
-
const grid = await gridService.getGridData({ testPlan: 'testPlan', company: { companyId: 'companyId' }, allGrids: [{ _id: 'gridId', type: 'gridId' }] });
|
|
155
|
-
expect(grid).to.
|
|
156
|
-
sinon.assert.calledOnce(getTestPlanStub);
|
|
157
|
-
});
|
|
158
|
-
|
|
159
|
-
it('should handle grid not found error when passing test plan', async () => {
|
|
160
|
-
await expect(gridService.getGridData({ testPlan: 'testPlan', company: { companyId: 'companyId' }, allGrids: [] }))
|
|
161
|
-
.to.eventually.be.rejectedWith('failed to find one of the test plan defined grid');
|
|
153
|
+
it('should not assign a grid when using a test plan', async () => {
|
|
154
|
+
const grid = await gridService.getGridData({ testPlan: ['testPlan'], company: { companyId: 'companyId' }, allGrids: [{ _id: 'gridId', type: 'gridId' }] });
|
|
155
|
+
expect(grid).to.be.undefined;
|
|
162
156
|
});
|
|
163
157
|
|
|
164
|
-
it('should
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
.to.eventually.be.rejectedWith('no test plan to run testPlan');
|
|
158
|
+
it('should not assign a grid when using a test plan id', async () => {
|
|
159
|
+
const grid = await gridService.getGridData({ testPlanIds: ['testPlan'], company: { companyId: 'companyId' }, allGrids: [{ _id: 'gridId', type: 'gridId' }] });
|
|
160
|
+
expect(grid).to.be.undefined;
|
|
168
161
|
});
|
|
169
162
|
|
|
170
163
|
it('should throw when no grid selected', async () => {
|
package/testRunStatus.js
CHANGED
|
@@ -63,7 +63,7 @@ const RunStatus = function (testInfoList, options, testPlanId, branchToUse) {
|
|
|
63
63
|
testPlanId,
|
|
64
64
|
testPlans: options.testPlan,
|
|
65
65
|
testLabels: options.label,
|
|
66
|
-
testSuites: _.uniq(
|
|
66
|
+
testSuites: _.uniq(testInfoList.flatMap(test => test.testSuites)),
|
|
67
67
|
testNames: options.name,
|
|
68
68
|
testIds: options.testId,
|
|
69
69
|
testConfigs: options.testConfigNames,
|
|
@@ -173,10 +173,12 @@ RunStatus.prototype.testStartReport = function (test, executionId, testRetryKey)
|
|
|
173
173
|
return Promise.resolve();
|
|
174
174
|
}
|
|
175
175
|
return runHook(this.options.beforeTest, Object.assign({}, test, { exportsGlobal: this.exportsGlobal }), this.options.userData.loginData.token)
|
|
176
|
-
.then(params => {
|
|
176
|
+
.then(async params => {
|
|
177
177
|
this.options.runParams[test.resultId] = test.config.testData = Object.assign({}, test.config.testData, this.exportsGlobal, this.fileUserParamsData, this.beforeSuiteParams, params);
|
|
178
178
|
test.startTime = Date.now();
|
|
179
|
-
|
|
179
|
+
await this.updateTestStatusRunning(test, executionId, testRetryKey);
|
|
180
|
+
|
|
181
|
+
return test;
|
|
180
182
|
}).catch(err => {
|
|
181
183
|
logger.error('Failed to start test', { err });
|
|
182
184
|
throw err;
|
package/workers/BaseWorker.js
CHANGED
|
@@ -141,8 +141,7 @@ class BaseWorker {
|
|
|
141
141
|
const player = this.initPlayer(testRunHandler);
|
|
142
142
|
try {
|
|
143
143
|
gridInfo = await gridService.handleHybridOrVendorIfNeeded(
|
|
144
|
-
this.options, gridInfo, this.testRunConfig, this.lambdatestService,
|
|
145
|
-
{ maxRetries: getBrowserRetriesNumber, currentRetry: failedGetBrowserAttempts + 1 },
|
|
144
|
+
this.options, gridInfo, this.testRunConfig, this.lambdatestService, { maxRetries: getBrowserRetriesNumber, currentRetry: failedGetBrowserAttempts + 1 },
|
|
146
145
|
);
|
|
147
146
|
this.options.gridData.provider = gridInfo.provider;
|
|
148
147
|
this.options.gridData.host = gridInfo.host;
|
|
@@ -192,9 +191,10 @@ class BaseWorker {
|
|
|
192
191
|
}
|
|
193
192
|
|
|
194
193
|
perf.log('before runTest onTestStarted');
|
|
195
|
-
await this.onTestStarted(this.id, testRunHandler.getTestId(), testRunHandler.getTestResultId(), shouldRerun, testRunHandler.getRetryKey());
|
|
196
|
-
|
|
194
|
+
const test = await this.onTestStarted(this.id, testRunHandler.getTestId(), testRunHandler.getTestResultId(), shouldRerun, testRunHandler.getRetryKey());
|
|
195
|
+
testRunHandler._baseUrl = test.config.baseUrl;
|
|
197
196
|
|
|
197
|
+
const testPlayer = await this.getTestPlayer(testRunHandler, customExtensionLocalLocation);
|
|
198
198
|
try {
|
|
199
199
|
return await this.runTestOnce(testRunHandler, testPlayer);
|
|
200
200
|
} finally {
|
|
@@ -276,13 +276,13 @@ class BaseWorker {
|
|
|
276
276
|
}
|
|
277
277
|
|
|
278
278
|
const msg = err instanceof Error ? err.message : err;
|
|
279
|
-
if (msg.
|
|
279
|
+
if (msg.includes(GET_BROWSER_TIMEOUT_MSG)) {
|
|
280
280
|
return { errorType: SETUP_TIMEOUT, reason: "Test couldn't get browser" };
|
|
281
281
|
}
|
|
282
|
-
if (msg.
|
|
282
|
+
if (msg.includes(TEST_START_TIMEOUT_MSG)) {
|
|
283
283
|
return { errorType: SETUP_TIMEOUT, reason: "Test couldn't be started" };
|
|
284
284
|
}
|
|
285
|
-
if (msg.
|
|
285
|
+
if (msg.includes(TEST_COMPLETE_TIMEOUT_MSG)) {
|
|
286
286
|
if (!this.testRunTimeout) {
|
|
287
287
|
return { errorType: SETUP_TIMEOUT, reason: 'Test timeout reached: test is too long' };
|
|
288
288
|
}
|
|
@@ -1,21 +1,32 @@
|
|
|
1
|
+
const proxyquire = require('proxyquire');
|
|
2
|
+
|
|
1
3
|
const { expect, sinon } = require('../../test/utils/testUtils');
|
|
2
|
-
const BaseWorker = require('./BaseWorker');
|
|
3
4
|
const gridService = require('../services/gridService');
|
|
4
5
|
const reporter = require('../reports/reporter');
|
|
5
6
|
const Bluebird = require('bluebird');
|
|
6
7
|
const { PageNotAvailableError, GridError, GetBrowserError } = require('../errors');
|
|
7
8
|
const servicesApi = require('../commons/testimServicesApi');
|
|
9
|
+
const { releasePlayer } = require('./workerUtils');
|
|
10
|
+
|
|
8
11
|
|
|
9
12
|
describe('BaseWorker', () => {
|
|
10
13
|
let worker;
|
|
11
14
|
let handleHybridStub;
|
|
12
15
|
let getGridSlotStub;
|
|
13
|
-
|
|
16
|
+
let runTestOnceStub = sinon.stub();
|
|
14
17
|
let testRunHandlerMock;
|
|
15
18
|
let testPlayerMock;
|
|
19
|
+
const onTestStartedStub = sinon.stub();
|
|
20
|
+
const sandbox = sinon.createSandbox();
|
|
16
21
|
|
|
17
22
|
beforeEach(() => {
|
|
18
|
-
|
|
23
|
+
const BaseWorker = proxyquire.noCallThru()('./BaseWorker', {
|
|
24
|
+
'./workerUtils': {
|
|
25
|
+
releasePlayer: () => sinon.stub().resolves({}),
|
|
26
|
+
},
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
worker = new BaseWorker(null, {}, null, null, onTestStartedStub);
|
|
19
30
|
worker.userData = {};
|
|
20
31
|
worker.options = { gridData: {}, browser: 'chrome', company: { companyId: 'companyId' }, getBrowserTimeout: 1000, getSessionTimeout: 100, getBrowserRetries: 10 };
|
|
21
32
|
worker.testRunConfig = {};
|
|
@@ -25,6 +36,7 @@ describe('BaseWorker', () => {
|
|
|
25
36
|
|
|
26
37
|
sinon.stub(worker, 'initPlayer').returns(testPlayerMock);
|
|
27
38
|
sinon.stub(worker, 'getBrowserOnce').returns({});
|
|
39
|
+
runTestOnceStub = sinon.stub(worker, 'runTestOnce');
|
|
28
40
|
handleHybridStub = sinon.stub(gridService, 'handleHybridOrVendorIfNeeded').callThrough();
|
|
29
41
|
getGridSlotStub = sinon.stub(gridService, 'getGridSlot').resolves({});
|
|
30
42
|
|
|
@@ -154,5 +166,27 @@ describe('BaseWorker', () => {
|
|
|
154
166
|
expect(worker.getBrowserOnce.getCall(2).args[3]).to.shallowDeepEqual({ type: 'testimHybrid', gridId: 'gridId', provider: 'a', host: 'google.com', user: undefined, key: undefined, port: 4444 });
|
|
155
167
|
});
|
|
156
168
|
});
|
|
169
|
+
|
|
170
|
+
describe('runTest', () => {
|
|
171
|
+
it('should call the runTestOnc with the base url of the test object we acquired from onTestStarted', async () => {
|
|
172
|
+
const testRunHandler = {
|
|
173
|
+
_baseUrl: 'https://testim.io',
|
|
174
|
+
getTestStatus: () => sinon.stub().returns(42),
|
|
175
|
+
getTestId: () => sinon.stub().returns(42),
|
|
176
|
+
getTestResultId: () => sinon.stub().returns(42),
|
|
177
|
+
getRetryKey: () => sinon.stub().returns(42),
|
|
178
|
+
getExecutionId: () => sinon.stub().returns(42),
|
|
179
|
+
testRunHandler: () => sinon.stub().returns(42),
|
|
180
|
+
clearTestResult: () => sinon.stub().returns(42),
|
|
181
|
+
};
|
|
182
|
+
onTestStartedStub.returns({
|
|
183
|
+
config: {
|
|
184
|
+
baseUrl: 'http://demo.testim.io/',
|
|
185
|
+
},
|
|
186
|
+
});
|
|
187
|
+
await worker.runTest(testRunHandler);
|
|
188
|
+
expect(runTestOnceStub.firstCall.firstArg._baseUrl).to.equals('http://demo.testim.io/');
|
|
189
|
+
});
|
|
190
|
+
});
|
|
157
191
|
});
|
|
158
192
|
});
|
|
@@ -45,7 +45,8 @@ class WorkerExtensionSingleBrowser extends WorkerExtension {
|
|
|
45
45
|
}
|
|
46
46
|
|
|
47
47
|
perf.log('before runTest onTestStarted single browser');
|
|
48
|
-
await this.onTestStarted(this.id, testRunHandler.getTestId(), testRunHandler.getTestResultId(), shouldRerun, testRunHandler.getRetryKey());
|
|
48
|
+
const test = await this.onTestStarted(this.id, testRunHandler.getTestId(), testRunHandler.getTestResultId(), shouldRerun, testRunHandler.getRetryKey());
|
|
49
|
+
testRunHandler._baseUrl = test.config.baseUrl;
|
|
49
50
|
const testPlayer = await this.getTestPlayer(testRunHandler, customExtensionLocalLocation);
|
|
50
51
|
|
|
51
52
|
testRunHandler.markClearBrowser();
|