UNPKG

3.42 kBJavaScriptView Raw
1"use strict";
2
3const Promise = require('bluebird');
4
5const {timeoutMessages} = require('../commons/constants');
6const BaseWorker = require('./BaseWorker');
7const logger = require('../commons/logger').getLogger("worker-ext");
8const ExtensionTestPlayer = require('../player/extensionTestPlayer');
9const reporter = require("../reports/reporter");
10
11const TEST_START_TIMEOUT = parseInt(process.env.TESTIM_TEST_START_TIMEOUT) || (2 * 60 * 1000);
12
13class WorkerExtension extends BaseWorker {
14 initPlayer() {
15 return new ExtensionTestPlayer(this.id);
16 }
17
18 getBrowserOnce(testRunHandler, customExtensionLocalLocation, player) {
19 reporter.onGetSession(this.id, this.testName, testRunHandler.getRunMode());
20 const {browserValue} = this.testRunConfig;
21 const {driver} = player;
22 return this.getGridSlot(browserValue, testRunHandler)
23 .then(gridInfo => driver.init(this.options, this.testName, this.testRunConfig, gridInfo, customExtensionLocalLocation, this.testResultId))
24 .catch(err => {
25 logger.error("failed to get browser", {
26 err: err,
27 testId: testRunHandler.getTestId(),
28 resultId: testRunHandler.getTestResultId()
29 });
30 return Promise.reject(err);
31 });
32 }
33
34 runTestOnce(testRunHandler, player) {
35 const { driver } = player;
36
37 const runExtTest = (testRunHandler) => {
38 return new Promise((resolve, reject) => {
39 testRunHandler.listenToRemoteStep(driver);
40
41 return testRunHandler.getRunTestUrl()
42 .then(url => {
43 reporter.onWaitToTestStart(this.id);
44 return Promise.all([driver.url(url), testRunHandler.onStarted()])
45 .timeout(TEST_START_TIMEOUT, timeoutMessages.TEST_START_TIMEOUT_MSG)
46 .catch(Promise.TimeoutError, () => testRunHandler.checkViaRestAPIIfTestStarted());
47 })
48 .then(() => {
49 reporter.onWaitToTestComplete(this.id, this.isCodeMode);
50 return testRunHandler.onCompleted().timeout(this.testRunTimeout, timeoutMessages.TEST_COMPLETE_TIMEOUT_MSG)
51 .then(testResult => {
52 resolve(testResult);
53 })
54 .catch(err => {
55 logger.warn("timeout wait until test completed", {err: err});
56 // complete time out
57 reject(new Error(err));
58 });
59 })
60 .catch(err => {
61 logger.warn("failed to start url", {err: err});
62 reject(new Error(err));
63 });
64 });
65 };
66
67 driver.start();
68
69 return super.runTestOnce(testRunHandler, player)
70 .then(() => runExtTest(testRunHandler))
71 .catch(err => {
72 logger.error("failed to run test", {
73 err: err,
74 testId: testRunHandler.getTestId(),
75 resultId: testRunHandler.getTestResultId()
76 });
77 return Promise.reject(err);
78 });
79 }
80}
81
82module.exports = WorkerExtension;