This repository was archived by the owner on Feb 3, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathhelpers.js
More file actions
60 lines (53 loc) · 1.95 KB
/
helpers.js
File metadata and controls
60 lines (53 loc) · 1.95 KB
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
/*global page*/
const fs = require("fs");
const retry = require("async-retry");
const config = require(process.cwd() + "/framework.config");
const defaultTimeout = config.defaultTimeout;
const defaultCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
class Helpers {
async takeScreenshot(filename) {
var targetDir = `./logs/${jasmine["currentSuite"].fullName}`;
if (typeof jasmine["currentTest"] !== "undefined") {
targetDir = targetDir + `/${jasmine["currentTest"].description}`;
}
fs.mkdirSync(targetDir, { recursive: true });
const screenshotPath = `${targetDir}/${filename || Date.now()}.png`;
await page.screenshot({ path: screenshotPath });
return screenshotPath;
}
async retry(fn, retries = 5, minTimeout = 500) {
await retry(fn, {
retries: retries,
factor: 2,
minTimeout: minTimeout,
maxTimeout: Infinity,
randomize: false,
});
}
async goToUrlAndLoad(url, timeout = defaultTimeout) {
await page.goto(url, {
waitUntil: "networkidle0", timeout: timeout,
});
}
async getFrame(selector) {
await page.waitForSelector(selector);
const elementHandle = await page.$(selector);
return await elementHandle.contentFrame();
}
async pageSetup(page) {
const environment = require(process.cwd() + "/test-environment/environment.js");
await environment.prototype.pageSetup(page);
}
async generateRandomText(length, characters = defaultCharacters) {
var result = "";
var charactersLength = characters.length;
for (var i = 0; i < length; i++) {
result += characters.charAt(
Math.floor(Math.random() * charactersLength)
);
}
console.log(`Generated a random text: ${result}`);
return result;
}
}
export default new Helpers();