@testim/testim-cli 3.236.0 → 3.239.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/executionQueue.js CHANGED
@@ -7,6 +7,10 @@ class ExecutionQueue {
7
7
  this._waitingTests = testList.map(testInfo => new TestRun(executionId, executionName, testInfo, options, branchToUse, testStatus));
8
8
  }
9
9
 
10
+ stop() {
11
+ this._waitingTests = [];
12
+ }
13
+
10
14
  getNext() {
11
15
  const nextTestRunHandler = this._waitingTests.shift();
12
16
  if (nextTestRunHandler) {
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@testim/testim-cli",
3
- "version": "3.236.0",
3
+ "version": "3.239.0",
4
4
  "lockfileVersion": 2,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@testim/testim-cli",
9
- "version": "3.236.0",
9
+ "version": "3.239.0",
10
10
  "license": "Proprietary",
11
11
  "dependencies": {
12
12
  "@applitools/eyes-sdk-core": "13.2.0",
@@ -484,21 +484,21 @@
484
484
  }
485
485
  },
486
486
  "node_modules/@babel/core": {
487
- "version": "7.18.0",
488
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.0.tgz",
489
- "integrity": "sha512-Xyw74OlJwDijToNi0+6BBI5mLLR5+5R3bcSH80LXzjzEGEUlvNzujEE71BaD/ApEZHAvFI/Mlmp4M5lIkdeeWw==",
487
+ "version": "7.18.2",
488
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.2.tgz",
489
+ "integrity": "sha512-A8pri1YJiC5UnkdrWcmfZTJTV85b4UXTAfImGmCfYmax4TR9Cw8sDS0MOk++Gp2mE/BefVJ5nwy5yzqNJbP/DQ==",
490
490
  "dev": true,
491
491
  "dependencies": {
492
492
  "@ampproject/remapping": "^2.1.0",
493
493
  "@babel/code-frame": "^7.16.7",
494
- "@babel/generator": "^7.18.0",
495
- "@babel/helper-compilation-targets": "^7.17.10",
494
+ "@babel/generator": "^7.18.2",
495
+ "@babel/helper-compilation-targets": "^7.18.2",
496
496
  "@babel/helper-module-transforms": "^7.18.0",
497
- "@babel/helpers": "^7.18.0",
497
+ "@babel/helpers": "^7.18.2",
498
498
  "@babel/parser": "^7.18.0",
499
499
  "@babel/template": "^7.16.7",
500
- "@babel/traverse": "^7.18.0",
501
- "@babel/types": "^7.18.0",
500
+ "@babel/traverse": "^7.18.2",
501
+ "@babel/types": "^7.18.2",
502
502
  "convert-source-map": "^1.7.0",
503
503
  "debug": "^4.1.0",
504
504
  "gensync": "^1.0.0-beta.2",
@@ -532,12 +532,12 @@
532
532
  }
533
533
  },
534
534
  "node_modules/@babel/generator": {
535
- "version": "7.18.0",
536
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.0.tgz",
537
- "integrity": "sha512-81YO9gGx6voPXlvYdZBliFXAZU8vZ9AZ6z+CjlmcnaeOcYSFbMTpdeDUO9xD9dh/68Vq03I8ZspfUTPfitcDHg==",
535
+ "version": "7.18.2",
536
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.2.tgz",
537
+ "integrity": "sha512-W1lG5vUwFvfMd8HVXqdfbuG7RuaSrTCCD8cl8fP8wOivdbtbIg2Db3IWUcgvfxKbbn6ZBGYRW/Zk1MIwK49mgw==",
538
538
  "dev": true,
539
539
  "dependencies": {
540
- "@babel/types": "^7.18.0",
540
+ "@babel/types": "^7.18.2",
541
541
  "@jridgewell/gen-mapping": "^0.3.0",
542
542
  "jsesc": "^2.5.1"
543
543
  },
@@ -560,9 +560,9 @@
560
560
  }
561
561
  },
562
562
  "node_modules/@babel/helper-compilation-targets": {
563
- "version": "7.17.10",
564
- "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.10.tgz",
565
- "integrity": "sha512-gh3RxjWbauw/dFiU/7whjd0qN9K6nPJMqe6+Er7rOavFh0CQUSwhAE3IcTho2rywPJFxej6TUUHDkWcYI6gGqQ==",
563
+ "version": "7.18.2",
564
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.2.tgz",
565
+ "integrity": "sha512-s1jnPotJS9uQnzFtiZVBUxe67CuBa679oWFHpxYYnTpRL/1ffhyX44R9uYiXoa/pLXcY9H2moJta0iaanlk/rQ==",
566
566
  "dev": true,
567
567
  "dependencies": {
568
568
  "@babel/compat-data": "^7.17.10",
@@ -587,13 +587,10 @@
587
587
  }
588
588
  },
589
589
  "node_modules/@babel/helper-environment-visitor": {
590
- "version": "7.16.7",
591
- "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz",
592
- "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==",
590
+ "version": "7.18.2",
591
+ "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.2.tgz",
592
+ "integrity": "sha512-14GQKWkX9oJzPiQQ7/J36FTXcD4kSp8egKjO9nINlSKiHITRA9q/R74qu8S9xlc/b/yjsJItQUeeh3xnGN0voQ==",
593
593
  "dev": true,
594
- "dependencies": {
595
- "@babel/types": "^7.16.7"
596
- },
597
594
  "engines": {
598
595
  "node": ">=6.9.0"
599
596
  }
@@ -655,12 +652,12 @@
655
652
  }
656
653
  },
657
654
  "node_modules/@babel/helper-simple-access": {
658
- "version": "7.17.7",
659
- "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz",
660
- "integrity": "sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==",
655
+ "version": "7.18.2",
656
+ "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.2.tgz",
657
+ "integrity": "sha512-7LIrjYzndorDY88MycupkpQLKS1AFfsVRm2k/9PtKScSy5tZq0McZTj+DiMRynboZfIqOKvo03pmhTaUgiD6fQ==",
661
658
  "dev": true,
662
659
  "dependencies": {
663
- "@babel/types": "^7.17.0"
660
+ "@babel/types": "^7.18.2"
664
661
  },
665
662
  "engines": {
666
663
  "node": ">=6.9.0"
@@ -696,14 +693,14 @@
696
693
  }
697
694
  },
698
695
  "node_modules/@babel/helpers": {
699
- "version": "7.18.0",
700
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.0.tgz",
701
- "integrity": "sha512-AE+HMYhmlMIbho9nbvicHyxFwhrO+xhKB6AhRxzl8w46Yj0VXTZjEsAoBVC7rB2I0jzX+yWyVybnO08qkfx6kg==",
696
+ "version": "7.18.2",
697
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.2.tgz",
698
+ "integrity": "sha512-j+d+u5xT5utcQSzrh9p+PaJX94h++KN+ng9b9WEJq7pkUPAd61FGqhjuUEdfknb3E/uDBb7ruwEeKkIxNJPIrg==",
702
699
  "dev": true,
703
700
  "dependencies": {
704
701
  "@babel/template": "^7.16.7",
705
- "@babel/traverse": "^7.18.0",
706
- "@babel/types": "^7.18.0"
702
+ "@babel/traverse": "^7.18.2",
703
+ "@babel/types": "^7.18.2"
707
704
  },
708
705
  "engines": {
709
706
  "node": ">=6.9.0"
@@ -799,9 +796,9 @@
799
796
  }
800
797
  },
801
798
  "node_modules/@babel/runtime": {
802
- "version": "7.18.0",
803
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.0.tgz",
804
- "integrity": "sha512-YMQvx/6nKEaucl0MY56mwIG483xk8SDNdlUwb2Ts6FUpr7fm85DxEmsY18LXBNhcTz6tO6JwZV8w1W06v8UKeg==",
799
+ "version": "7.18.2",
800
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.2.tgz",
801
+ "integrity": "sha512-mTV1PibQHr88R1p4nH/uhR/TJ0mXGEgKTx6Mnd1cn/DSA9r8fqbd+d31xujI2C1pRWtxjy+HAcmtB+MEcF4VNg==",
805
802
  "dependencies": {
806
803
  "regenerator-runtime": "^0.13.4"
807
804
  },
@@ -824,19 +821,19 @@
824
821
  }
825
822
  },
826
823
  "node_modules/@babel/traverse": {
827
- "version": "7.18.0",
828
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.0.tgz",
829
- "integrity": "sha512-oNOO4vaoIQoGjDQ84LgtF/IAlxlyqL4TUuoQ7xLkQETFaHkY1F7yazhB4Kt3VcZGL0ZF/jhrEpnXqUb0M7V3sw==",
824
+ "version": "7.18.2",
825
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.2.tgz",
826
+ "integrity": "sha512-9eNwoeovJ6KH9zcCNnENY7DMFwTU9JdGCFtqNLfUAqtUHRCOsTOqWoffosP8vKmNYeSBUv3yVJXjfd8ucwOjUA==",
830
827
  "dev": true,
831
828
  "dependencies": {
832
829
  "@babel/code-frame": "^7.16.7",
833
- "@babel/generator": "^7.18.0",
834
- "@babel/helper-environment-visitor": "^7.16.7",
830
+ "@babel/generator": "^7.18.2",
831
+ "@babel/helper-environment-visitor": "^7.18.2",
835
832
  "@babel/helper-function-name": "^7.17.9",
836
833
  "@babel/helper-hoist-variables": "^7.16.7",
837
834
  "@babel/helper-split-export-declaration": "^7.16.7",
838
835
  "@babel/parser": "^7.18.0",
839
- "@babel/types": "^7.18.0",
836
+ "@babel/types": "^7.18.2",
840
837
  "debug": "^4.1.0",
841
838
  "globals": "^11.1.0"
842
839
  },
@@ -845,9 +842,9 @@
845
842
  }
846
843
  },
847
844
  "node_modules/@babel/types": {
848
- "version": "7.18.0",
849
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.0.tgz",
850
- "integrity": "sha512-vhAmLPAiC8j9K2GnsnLPCIH5wCrPpYIVBCWRBFDCB7Y/BXLqi/O+1RSTTM2bsmg6U/551+FCf9PNPxjABmxHTw==",
845
+ "version": "7.18.2",
846
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.2.tgz",
847
+ "integrity": "sha512-0On6B8A4/+mFUto5WERt3EEuG1NznDirvwca1O8UwXQHVY8g3R7OzYgxXdOfMwLO08UrpUD/2+3Bclyq+/C94Q==",
851
848
  "dev": true,
852
849
  "dependencies": {
853
850
  "@babel/helper-validator-identifier": "^7.16.7",
@@ -4894,9 +4891,9 @@
4894
4891
  }
4895
4892
  },
4896
4893
  "node_modules/electron-to-chromium": {
4897
- "version": "1.4.137",
4898
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.137.tgz",
4899
- "integrity": "sha512-0Rcpald12O11BUogJagX3HsCN3FE83DSqWjgXoHo5a72KUKMSfI39XBgJpgNNxS9fuGzytaFjE06kZkiVFy2qA==",
4894
+ "version": "1.4.138",
4895
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.138.tgz",
4896
+ "integrity": "sha512-IOyp2Seq3w4QLln+yZWcMF3VXhhduz4bwg9gfI+CnP5TkzwNXQ8FCZuwwPsnes73AfWdf5J2n2OXdUwDUspDPQ==",
4900
4897
  "dev": true
4901
4898
  },
4902
4899
  "node_modules/emoji-regex": {
@@ -9245,9 +9242,9 @@
9245
9242
  }
9246
9243
  },
9247
9244
  "node_modules/node-releases": {
9248
- "version": "2.0.4",
9249
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.4.tgz",
9250
- "integrity": "sha512-gbMzqQtTtDz/00jQzZ21PQzdI9PyLYqUSvD0p3naOhX4odFji0ZxYdnVwPTxmSwkmxhcFImpozceidSG+AgoPQ==",
9245
+ "version": "2.0.5",
9246
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.5.tgz",
9247
+ "integrity": "sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q==",
9251
9248
  "dev": true
9252
9249
  },
9253
9250
  "node_modules/nopt": {
@@ -16745,21 +16742,21 @@
16745
16742
  "dev": true
16746
16743
  },
16747
16744
  "@babel/core": {
16748
- "version": "7.18.0",
16749
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.0.tgz",
16750
- "integrity": "sha512-Xyw74OlJwDijToNi0+6BBI5mLLR5+5R3bcSH80LXzjzEGEUlvNzujEE71BaD/ApEZHAvFI/Mlmp4M5lIkdeeWw==",
16745
+ "version": "7.18.2",
16746
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.2.tgz",
16747
+ "integrity": "sha512-A8pri1YJiC5UnkdrWcmfZTJTV85b4UXTAfImGmCfYmax4TR9Cw8sDS0MOk++Gp2mE/BefVJ5nwy5yzqNJbP/DQ==",
16751
16748
  "dev": true,
16752
16749
  "requires": {
16753
16750
  "@ampproject/remapping": "^2.1.0",
16754
16751
  "@babel/code-frame": "^7.16.7",
16755
- "@babel/generator": "^7.18.0",
16756
- "@babel/helper-compilation-targets": "^7.17.10",
16752
+ "@babel/generator": "^7.18.2",
16753
+ "@babel/helper-compilation-targets": "^7.18.2",
16757
16754
  "@babel/helper-module-transforms": "^7.18.0",
16758
- "@babel/helpers": "^7.18.0",
16755
+ "@babel/helpers": "^7.18.2",
16759
16756
  "@babel/parser": "^7.18.0",
16760
16757
  "@babel/template": "^7.16.7",
16761
- "@babel/traverse": "^7.18.0",
16762
- "@babel/types": "^7.18.0",
16758
+ "@babel/traverse": "^7.18.2",
16759
+ "@babel/types": "^7.18.2",
16763
16760
  "convert-source-map": "^1.7.0",
16764
16761
  "debug": "^4.1.0",
16765
16762
  "gensync": "^1.0.0-beta.2",
@@ -16785,12 +16782,12 @@
16785
16782
  }
16786
16783
  },
16787
16784
  "@babel/generator": {
16788
- "version": "7.18.0",
16789
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.0.tgz",
16790
- "integrity": "sha512-81YO9gGx6voPXlvYdZBliFXAZU8vZ9AZ6z+CjlmcnaeOcYSFbMTpdeDUO9xD9dh/68Vq03I8ZspfUTPfitcDHg==",
16785
+ "version": "7.18.2",
16786
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.2.tgz",
16787
+ "integrity": "sha512-W1lG5vUwFvfMd8HVXqdfbuG7RuaSrTCCD8cl8fP8wOivdbtbIg2Db3IWUcgvfxKbbn6ZBGYRW/Zk1MIwK49mgw==",
16791
16788
  "dev": true,
16792
16789
  "requires": {
16793
- "@babel/types": "^7.18.0",
16790
+ "@babel/types": "^7.18.2",
16794
16791
  "@jridgewell/gen-mapping": "^0.3.0",
16795
16792
  "jsesc": "^2.5.1"
16796
16793
  },
@@ -16809,9 +16806,9 @@
16809
16806
  }
16810
16807
  },
16811
16808
  "@babel/helper-compilation-targets": {
16812
- "version": "7.17.10",
16813
- "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.10.tgz",
16814
- "integrity": "sha512-gh3RxjWbauw/dFiU/7whjd0qN9K6nPJMqe6+Er7rOavFh0CQUSwhAE3IcTho2rywPJFxej6TUUHDkWcYI6gGqQ==",
16809
+ "version": "7.18.2",
16810
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.2.tgz",
16811
+ "integrity": "sha512-s1jnPotJS9uQnzFtiZVBUxe67CuBa679oWFHpxYYnTpRL/1ffhyX44R9uYiXoa/pLXcY9H2moJta0iaanlk/rQ==",
16815
16812
  "dev": true,
16816
16813
  "requires": {
16817
16814
  "@babel/compat-data": "^7.17.10",
@@ -16829,13 +16826,10 @@
16829
16826
  }
16830
16827
  },
16831
16828
  "@babel/helper-environment-visitor": {
16832
- "version": "7.16.7",
16833
- "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz",
16834
- "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==",
16835
- "dev": true,
16836
- "requires": {
16837
- "@babel/types": "^7.16.7"
16838
- }
16829
+ "version": "7.18.2",
16830
+ "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.2.tgz",
16831
+ "integrity": "sha512-14GQKWkX9oJzPiQQ7/J36FTXcD4kSp8egKjO9nINlSKiHITRA9q/R74qu8S9xlc/b/yjsJItQUeeh3xnGN0voQ==",
16832
+ "dev": true
16839
16833
  },
16840
16834
  "@babel/helper-function-name": {
16841
16835
  "version": "7.17.9",
@@ -16882,12 +16876,12 @@
16882
16876
  }
16883
16877
  },
16884
16878
  "@babel/helper-simple-access": {
16885
- "version": "7.17.7",
16886
- "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz",
16887
- "integrity": "sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==",
16879
+ "version": "7.18.2",
16880
+ "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.2.tgz",
16881
+ "integrity": "sha512-7LIrjYzndorDY88MycupkpQLKS1AFfsVRm2k/9PtKScSy5tZq0McZTj+DiMRynboZfIqOKvo03pmhTaUgiD6fQ==",
16888
16882
  "dev": true,
16889
16883
  "requires": {
16890
- "@babel/types": "^7.17.0"
16884
+ "@babel/types": "^7.18.2"
16891
16885
  }
16892
16886
  },
16893
16887
  "@babel/helper-split-export-declaration": {
@@ -16911,14 +16905,14 @@
16911
16905
  "dev": true
16912
16906
  },
16913
16907
  "@babel/helpers": {
16914
- "version": "7.18.0",
16915
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.0.tgz",
16916
- "integrity": "sha512-AE+HMYhmlMIbho9nbvicHyxFwhrO+xhKB6AhRxzl8w46Yj0VXTZjEsAoBVC7rB2I0jzX+yWyVybnO08qkfx6kg==",
16908
+ "version": "7.18.2",
16909
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.2.tgz",
16910
+ "integrity": "sha512-j+d+u5xT5utcQSzrh9p+PaJX94h++KN+ng9b9WEJq7pkUPAd61FGqhjuUEdfknb3E/uDBb7ruwEeKkIxNJPIrg==",
16917
16911
  "dev": true,
16918
16912
  "requires": {
16919
16913
  "@babel/template": "^7.16.7",
16920
- "@babel/traverse": "^7.18.0",
16921
- "@babel/types": "^7.18.0"
16914
+ "@babel/traverse": "^7.18.2",
16915
+ "@babel/types": "^7.18.2"
16922
16916
  }
16923
16917
  },
16924
16918
  "@babel/highlight": {
@@ -16989,9 +16983,9 @@
16989
16983
  "dev": true
16990
16984
  },
16991
16985
  "@babel/runtime": {
16992
- "version": "7.18.0",
16993
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.0.tgz",
16994
- "integrity": "sha512-YMQvx/6nKEaucl0MY56mwIG483xk8SDNdlUwb2Ts6FUpr7fm85DxEmsY18LXBNhcTz6tO6JwZV8w1W06v8UKeg==",
16986
+ "version": "7.18.2",
16987
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.2.tgz",
16988
+ "integrity": "sha512-mTV1PibQHr88R1p4nH/uhR/TJ0mXGEgKTx6Mnd1cn/DSA9r8fqbd+d31xujI2C1pRWtxjy+HAcmtB+MEcF4VNg==",
16995
16989
  "requires": {
16996
16990
  "regenerator-runtime": "^0.13.4"
16997
16991
  }
@@ -17008,27 +17002,27 @@
17008
17002
  }
17009
17003
  },
17010
17004
  "@babel/traverse": {
17011
- "version": "7.18.0",
17012
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.0.tgz",
17013
- "integrity": "sha512-oNOO4vaoIQoGjDQ84LgtF/IAlxlyqL4TUuoQ7xLkQETFaHkY1F7yazhB4Kt3VcZGL0ZF/jhrEpnXqUb0M7V3sw==",
17005
+ "version": "7.18.2",
17006
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.2.tgz",
17007
+ "integrity": "sha512-9eNwoeovJ6KH9zcCNnENY7DMFwTU9JdGCFtqNLfUAqtUHRCOsTOqWoffosP8vKmNYeSBUv3yVJXjfd8ucwOjUA==",
17014
17008
  "dev": true,
17015
17009
  "requires": {
17016
17010
  "@babel/code-frame": "^7.16.7",
17017
- "@babel/generator": "^7.18.0",
17018
- "@babel/helper-environment-visitor": "^7.16.7",
17011
+ "@babel/generator": "^7.18.2",
17012
+ "@babel/helper-environment-visitor": "^7.18.2",
17019
17013
  "@babel/helper-function-name": "^7.17.9",
17020
17014
  "@babel/helper-hoist-variables": "^7.16.7",
17021
17015
  "@babel/helper-split-export-declaration": "^7.16.7",
17022
17016
  "@babel/parser": "^7.18.0",
17023
- "@babel/types": "^7.18.0",
17017
+ "@babel/types": "^7.18.2",
17024
17018
  "debug": "^4.1.0",
17025
17019
  "globals": "^11.1.0"
17026
17020
  }
17027
17021
  },
17028
17022
  "@babel/types": {
17029
- "version": "7.18.0",
17030
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.0.tgz",
17031
- "integrity": "sha512-vhAmLPAiC8j9K2GnsnLPCIH5wCrPpYIVBCWRBFDCB7Y/BXLqi/O+1RSTTM2bsmg6U/551+FCf9PNPxjABmxHTw==",
17023
+ "version": "7.18.2",
17024
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.2.tgz",
17025
+ "integrity": "sha512-0On6B8A4/+mFUto5WERt3EEuG1NznDirvwca1O8UwXQHVY8g3R7OzYgxXdOfMwLO08UrpUD/2+3Bclyq+/C94Q==",
17032
17026
  "dev": true,
17033
17027
  "requires": {
17034
17028
  "@babel/helper-validator-identifier": "^7.16.7",
@@ -20281,9 +20275,9 @@
20281
20275
  }
20282
20276
  },
20283
20277
  "electron-to-chromium": {
20284
- "version": "1.4.137",
20285
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.137.tgz",
20286
- "integrity": "sha512-0Rcpald12O11BUogJagX3HsCN3FE83DSqWjgXoHo5a72KUKMSfI39XBgJpgNNxS9fuGzytaFjE06kZkiVFy2qA==",
20278
+ "version": "1.4.138",
20279
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.138.tgz",
20280
+ "integrity": "sha512-IOyp2Seq3w4QLln+yZWcMF3VXhhduz4bwg9gfI+CnP5TkzwNXQ8FCZuwwPsnes73AfWdf5J2n2OXdUwDUspDPQ==",
20287
20281
  "dev": true
20288
20282
  },
20289
20283
  "emoji-regex": {
@@ -23716,9 +23710,9 @@
23716
23710
  }
23717
23711
  },
23718
23712
  "node-releases": {
23719
- "version": "2.0.4",
23720
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.4.tgz",
23721
- "integrity": "sha512-gbMzqQtTtDz/00jQzZ21PQzdI9PyLYqUSvD0p3naOhX4odFji0ZxYdnVwPTxmSwkmxhcFImpozceidSG+AgoPQ==",
23713
+ "version": "2.0.5",
23714
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.5.tgz",
23715
+ "integrity": "sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q==",
23722
23716
  "dev": true
23723
23717
  },
23724
23718
  "nopt": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@testim/testim-cli",
3
- "version": "3.236.0",
3
+ "version": "3.239.0",
4
4
  "description": "Command line interface for running Testing on your CI",
5
5
  "author": "Oren Rubin",
6
6
  "contributors": [{
@@ -1,6 +1,13 @@
1
- "use strict";
2
- var scroll = function (elementToScrollOn, elementToScrollTo, isScrollToElement, isDynamicScroll, expectedX, expectedY, shouldScrollLeft, shouldScrollTop) {
1
+ // Disabling the eslint to keep this in a format which works on IE 11.
2
+ /* eslint-disable no-var */
3
+ /* eslint-disable no-redeclare */
4
+ /* eslint-disable object-shorthand */
5
+ /* eslint-disable one-var */
6
+ /* eslint-disable operator-linebreak */
7
+
8
+ 'use strict';
3
9
 
10
+ var scroll = function (elementToScrollOn, elementToScrollTo, isScrollToElement, isDynamicScroll, expectedX, expectedY, shouldScrollLeft, shouldScrollTop) {
4
11
  function doScroll(expectedPosition, element) {
5
12
  if (!element) {
6
13
  return { success: false };
@@ -17,7 +24,7 @@ var scroll = function (elementToScrollOn, elementToScrollTo, isScrollToElement,
17
24
 
18
25
  function getExpectedPosition(parentElement, locatedElement, isScrollToElement, expectedX, expectedY, shouldScrollLeft, shouldScrollTop) {
19
26
  if (!isScrollToElement) {
20
- return {x: expectedX, y: expectedY};
27
+ return { x: expectedX, y: expectedY };
21
28
  }
22
29
 
23
30
  var target = getLocatedElement(locatedElement);
@@ -26,7 +33,7 @@ var scroll = function (elementToScrollOn, elementToScrollTo, isScrollToElement,
26
33
  return { x: parentElement.scrollWidth, y: parentElement.scrollHeight };
27
34
  }
28
35
 
29
- if(!target) {
36
+ if (!target) {
30
37
  throw new Error('could not find target element');
31
38
  }
32
39
 
@@ -46,7 +53,7 @@ var scroll = function (elementToScrollOn, elementToScrollTo, isScrollToElement,
46
53
  ? parentElement.scrollLeft + targetRect.left - Math.min(expectedX, MAX_WIDTH)
47
54
  : parentElement.scrollLeft;
48
55
 
49
- return {x: Math.round(xScroll), y: Math.round(yScroll)};
56
+ return { x: Math.round(xScroll), y: Math.round(yScroll) };
50
57
  }
51
58
 
52
59
  var isDocument = !elementToScrollOn;
@@ -55,7 +62,7 @@ var scroll = function (elementToScrollOn, elementToScrollTo, isScrollToElement,
55
62
  if (!elementToScrollOn) {
56
63
  throw new Error('could not find target to scroll on');
57
64
  }
58
- var positionBeforeScroll = {top: elementToScrollOn.scrollTop, left: elementToScrollOn.scrollLeft};
65
+ var positionBeforeScroll = { top: elementToScrollOn.scrollTop, left: elementToScrollOn.scrollLeft };
59
66
  var expectedPosition = getExpectedPosition(elementToScrollOn, elementToScrollTo, isScrollToElement, expectedX, expectedY, shouldScrollLeft, shouldScrollTop);
60
67
 
61
68
  var result = doScroll(expectedPosition, elementToScrollOn);
@@ -71,7 +78,7 @@ var scroll = function (elementToScrollOn, elementToScrollTo, isScrollToElement,
71
78
  var actualScrollToElement = getLocatedElement(elementToScrollTo);
72
79
 
73
80
  if (isScrollToElement && isDynamicScroll && !actualScrollToElement) {
74
- return { success: false, expectedPosition };
81
+ return { success: false, expectedPosition: expectedPosition };
75
82
  }
76
83
 
77
84
  if (isScrollToElement) {
@@ -82,7 +89,7 @@ var scroll = function (elementToScrollOn, elementToScrollTo, isScrollToElement,
82
89
  actualXString = rect.left;
83
90
  actualYString = rect.top;
84
91
  }
85
- return {success: result.success, actualX: actualXString, actualY: actualYString};
92
+ return { success: result.success, actualX: actualXString, actualY: actualYString };
86
93
  };
87
94
 
88
95
  module.exports = scroll;
@@ -332,7 +332,7 @@ class WebDriver extends WebDriverApi {
332
332
  }
333
333
 
334
334
  getElementTextJS(locatedElement) {
335
- function extractTextCode(locatedElement) {
335
+ function extractTextCode(locatedElement, ignoreHiddenTagsText) {
336
336
  // copy of utils.getElementTextContent to run inside content script
337
337
  // sadly .children doesn't work for SVG elements in IE11
338
338
  function clearTitleTags(node) {
@@ -362,14 +362,15 @@ class WebDriver extends WebDriverApi {
362
362
  return element.shadowRoot.textContent.replace(/(\r\n|\n|\r)/gm, "");
363
363
  }
364
364
  } catch (err) { }
365
- if (this.ignoreHiddenTagsText && Array.prototype.some.call(element.children, elem => elem.hidden)) {
366
- const dupElement = element.cloneNode(true);
367
- const hiddenChildren = Array.prototype.filter.call(dupElement.children, elem => elem.hidden);
368
- hiddenChildren.forEach(child => {
365
+ if (ignoreHiddenTagsText && Array.prototype.some.call(element.children, function (elem) { return elem.hidden; })) {
366
+ var dupElement = element.cloneNode(true);
367
+ var hiddenChildren = Array.prototype.filter.call(dupElement.children, function (elem) { return elem.hidden; });
368
+ hiddenChildren.forEach(function (child) {
369
369
  dupElement.removeChild(child);
370
370
  });
371
- return dupElement.textContent.replace(/(\r\n|\n|\r)/gm, "");
372
- } return element.textContent.replace(/(\r\n|\n|\r)/gm, "");
371
+ return dupElement.textContent.replace(/(\r\n|\n|\r)/gm, '');
372
+ }
373
+ return element.textContent.replace(/(\r\n|\n|\r)/gm, '');
373
374
  }
374
375
 
375
376
  function getElementTextContent(element) {
@@ -399,7 +400,7 @@ class WebDriver extends WebDriverApi {
399
400
  var getLocatedElement = ${codeSnippets().getLocatedElementCode};
400
401
  var extractText = ${extractTextCode.toString()};
401
402
  return extractText.apply(null, arguments)
402
- `, locatedElement)
403
+ `, locatedElement, this.ignoreHiddenTagsText)
403
404
  .then(result => result.value);
404
405
  }
405
406
 
package/runOptions.js CHANGED
@@ -187,6 +187,8 @@ program
187
187
  .option('--token [token]', 'identification token to testim')
188
188
  .option('--is-regression-baseline-run', 'save doms and run results as regression baseline data')
189
189
  .option('--parallel [number-of-tests]', 'number of tests to run on parallel')
190
+ .option('--before-parallel [number-of-tests]', 'number of tests to run on parallel in the before phase of a test plan')
191
+ .option('--after-parallel [number-of-tests]', 'number of tests to run on parallel in the after phase of a test plan')
190
192
  .option('--canary [canary-mode]', 'enable canary mode', false)
191
193
  .option('--test-plan [test-plan-name]', 'test plan to run', collect, [])
192
194
  .option('--test-plan-id [test-plan-id]', 'test plan to run', collect, [])
@@ -762,7 +764,9 @@ module.exports = {
762
764
 
763
765
  const timeoutWasGiven = Boolean(program.timeout);
764
766
  program.timeout = !program.timeout || typeof program.timeout === 'boolean' ? 10 * 60 * 1000 : Number(program.timeout);
767
+ program.beforeParallel = !program.beforeParallel || typeof program.beforeParallel === 'boolean' ? 1 : Number(program.beforeParallel);
765
768
  program.parallel = !program.parallel || typeof program.parallel === 'boolean' ? 1 : Number(program.parallel);
769
+ program.afterParallel = !program.afterParallel || typeof program.afterParallel === 'boolean' ? 1 : Number(program.afterParallel);
766
770
 
767
771
 
768
772
  if (program.parallel > 1 && program.run && !program.gridId && !program.grid &&
@@ -817,10 +821,18 @@ module.exports = {
817
821
  throw new ArgError('test run timeout could not be a negative number, --timeout <run-timeout>');
818
822
  }
819
823
 
824
+ if (program.beforeParallel <= 0 || _.isNaN(program.beforeParallel)) {
825
+ throw new ArgError('before-parallel could not be a negative number or not number, --before-parallel <number-of-tests>');
826
+ }
827
+
820
828
  if (program.parallel <= 0 || _.isNaN(program.parallel)) {
821
829
  throw new ArgError('parallel could not be a negative number or not number, --parallel <number-of-tests>');
822
830
  }
823
831
 
832
+ if (program.afterParallel <= 0 || _.isNaN(program.afterParallel)) {
833
+ throw new ArgError('after-parallel could not be a negative number or not number, --after-parallel <number-of-tests>');
834
+ }
835
+
824
836
  if (![CLI_MODE.EXTENSION, CLI_MODE.SELENIUM].includes(program.mode)) {
825
837
  throw new ArgError(`runner mode <${program.mode}> is not supported`);
826
838
  }
@@ -866,6 +878,10 @@ module.exports = {
866
878
  );
867
879
  }
868
880
 
881
+ if (!isTestPlanSpecified && (program.beforeParallel !== 1 || program.afterParallel !== 1)) {
882
+ throw new ArgError('cannot set --before-parallel or --after-parallel without --test-plan option');
883
+ }
884
+
869
885
  if (
870
886
  (program.testId.length ||
871
887
  isTestPlanSpecified ||
@@ -1089,7 +1105,9 @@ module.exports = {
1089
1105
  mode: program.mode,
1090
1106
  isRegressionBaselineRun: program.isRegressionBaselineRun,
1091
1107
  browser: program.browser,
1108
+ beforeParallel: program.beforeParallel,
1092
1109
  parallel: program.parallel,
1110
+ afterParallel: program.afterParallel,
1093
1111
  canary: program.canary,
1094
1112
  rerunFailedByRunId: program.rerunFailedByRunId,
1095
1113
  disableGridCheck: program.disableGridCheck,
@@ -50,6 +50,8 @@ class ParallelWorkerManager {
50
50
  return undefined;
51
51
  }
52
52
 
53
+ let stoppedOnError = false;
54
+ let runningTests = 0;
53
55
  const runAndWaitToComplete = token => new Promise((resolve, reject) => {
54
56
  const projectId = options.project;
55
57
  const executionQueue = new ExecutionQueue(executionId, executionName, testList, options, branchToUse, testStatus);
@@ -68,6 +70,7 @@ class ParallelWorkerManager {
68
70
  const sessionType = utils.getSessionType(options);
69
71
 
70
72
  const onTestStarted = (wid, testId, resultId, isRerun, testRetryKey) => {
73
+ runningTests++;
71
74
  analyticsService.analyticsTestStart({
72
75
  authData,
73
76
  executionId,
@@ -88,6 +91,7 @@ class ParallelWorkerManager {
88
91
  };
89
92
 
90
93
  const onTestCompleted = async (wid, testId, testResult, sessionId, isRerun) => {
94
+ runningTests--;
91
95
  const update = {};
92
96
  if (lightweightMode && lightweightMode.onlyTestIdsNoSuite) {
93
97
  update.show = true;
@@ -150,11 +154,11 @@ class ParallelWorkerManager {
150
154
  isStartUp,
151
155
  });
152
156
  if (stopOnError && !testResult.success) {
153
- reject(new StopRunOnError());
154
- throw new StopRunOnError();
157
+ executionQueue.stop();
158
+ stoppedOnError = true;
155
159
  }
156
160
  const completedTests = Object.keys(combinedTestResults).length;
157
- if (completedTests === testCount) {
161
+ if (completedTests === testCount || (stoppedOnError && runningTests === 0)) {
158
162
  resolve(combinedTestResults);
159
163
  return undefined;
160
164
  }
@@ -164,8 +168,9 @@ class ParallelWorkerManager {
164
168
  const onTestIgnored = (wid, testResult) => {
165
169
  combinedTestResults[testResult.resultId] = testResult;
166
170
  testStatus.onTestIgnored(wid, testResult.resultId);
171
+ runningTests--;
167
172
  const completedTests = Object.keys(combinedTestResults).length;
168
- if (completedTests === testCount) {
173
+ if (completedTests === testCount || (stoppedOnError && runningTests === 0)) {
169
174
  resolve(combinedTestResults);
170
175
  }
171
176
  };
@@ -195,7 +200,11 @@ class ParallelWorkerManager {
195
200
 
196
201
  try {
197
202
  const token = await testimCustomToken.getCustomTokenV3();
198
- return await runAndWaitToComplete(token);
203
+ const result = await runAndWaitToComplete(token);
204
+ if (stoppedOnError) {
205
+ throw new StopRunOnError();
206
+ }
207
+ return result;
199
208
  } catch (err) {
200
209
  logger.error('failed running parallel workers', { executionId, err });
201
210
  throw err;
@@ -35,7 +35,7 @@ class TestPlanRunner {
35
35
  const authData = testimCustomToken.getTokenV3UserData();
36
36
 
37
37
  const runBeforeTests = () => {
38
- const workerCount = 1;
38
+ const workerCount = tpOptions.beforeParallel || 1;
39
39
  const stopOnError = true;
40
40
  return this.workerManager.runTests(beforeTests, testStatus, executionId, executionName, tpOptions, branchToUse, authData, workerCount, stopOnError)
41
41
  .then(beforeTestsResults => Object.assign(executionResults, beforeTestsResults));
@@ -51,7 +51,7 @@ class TestPlanRunner {
51
51
  };
52
52
 
53
53
  const runAfterTests = () => {
54
- const workerCount = 1;
54
+ const workerCount = tpOptions.afterParallel || 1;
55
55
  const stopOnError = false;
56
56
  return this.workerManager.runTests(afterTests, testStatus, executionId, executionName, tpOptions, branchToUse, authData, workerCount, stopOnError)
57
57
  .then(afterTestsResults => Object.assign(executionResults, afterTestsResults));