-
Notifications
You must be signed in to change notification settings - Fork 0
/
Zalenium.service.js
90 lines (77 loc) · 2.13 KB
/
Zalenium.service.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
import logger from "@wdio/logger";
import path from "path";
import got from "got";
const log = logger("Zalenium");
export default class ZaleniumService {
constructor({ host, port, build } = {}) {
this.host = host;
this.port = port;
this.build = build;
this.baseUrl = `${host}:${port}`;
this.INFORMATION = `${this.baseUrl}/dashboard/information`;
this.STATUS = `${this.baseUrl}/wd/hub/status`;
log.info(`[CONFIG] ${JSON.stringify(this, null, 4)}`);
}
async onPrepare(config) {
return got(this.STATUS);
}
get name() {
return this._name;
}
set name(specFile) {
!specFile && (this._name = undefined);
specFile = Array.isArray(specFile) ? specFile.pop() : specFile || "";
// Get file name
let name = path.basename(specFile).split(".");
// Remove extension
name.length > 1 && name.pop();
// Grab name
name = name.length > 1 ? name.join(".") : name.pop();
log.info(
`[CONFIG] Set test name to "${name}" from spec file ${specFile}`
);
this._name = name;
}
beforeSession(config, capabilities, specs) {
this.name = specs;
this.build = this.build || undefined;
if (browser.isMultiremote) {
Object.keys(capabilities).forEach(
(browser, cap = capabilities[browser].capabilities) => {
cap["zal:build"] = this.build;
cap["zal:name"] = this.name;
cap["bstack:options"] = cap["bstack:options"] || {};
cap["bstack:options"].sessionName = this.name;
}
);
} else {
capabilities["zal:build"] = this.build;
capabilities["zal:name"] = this.name;
capabilities["bstack:options"] =
capabilities["bstack:options"] || {};
capabilities["bstack:options"].sessionName = this.name;
}
}
after(result) {
const passed = result === 0;
const passedCookie = {
name: "zaleniumTestPassed",
value: passed ? "true" : "false"
};
try {
browser.addCookie(passedCookie);
} catch (e) {
// browser session does not exist? Whatever
}
}
beforeScenario(uri, feature, scenario, sourceLocation) {
try {
browser.addCookie({
name: "zaleniumMessage",
value: `Test: ${scenario.name}`
});
} catch (e) {
// browser session does not exist? Whatever
}
}
}