Skip to content
This repository has been archived by the owner on Feb 3, 2023. It is now read-only.

Commit

Permalink
Refactoring. Interceptor and Helpers changed to singleton pattern. Up…
Browse files Browse the repository at this point in the history
…dated tests and Element.
  • Loading branch information
jevgenijusmarinuskinas committed Sep 25, 2020
1 parent d4d886e commit b39caa6
Show file tree
Hide file tree
Showing 5 changed files with 26 additions and 29 deletions.
12 changes: 5 additions & 7 deletions example/tests/helpers.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,6 @@ import { Element, Helpers } from "test-juggler";
const fs = require("fs");

describe("Helpers", () => {
let helpers = new Helpers();

beforeEach(async () => {
console.log("Running test: " + jasmine["currentTest"].fullName);
});
Expand All @@ -16,7 +14,7 @@ describe("Helpers", () => {
const expectedFilePath = `./logs/Helpers/should take screenshot, save to logs folder and return filepath/${fileName}.png`;

//Act
const actualFilePath = await helpers.takeScreenshot(fileName);
const actualFilePath = await Helpers.takeScreenshot(fileName);

//Assert
expect(actualFilePath).toBe(expectedFilePath);
Expand All @@ -28,7 +26,7 @@ describe("Helpers", () => {
await page.goto("http://the-internet.herokuapp.com/");

//Act
const actualFilePath = await helpers.takeScreenshot();
const actualFilePath = await Helpers.takeScreenshot();

//Assert
expect(actualFilePath).toContain(Date.now().toString().slice(0, -6));
Expand All @@ -42,7 +40,7 @@ describe("Helpers", () => {

//Act
await startButton.click();
await helpers.retry(async () => {
await Helpers.retry(async () => {
await elementToLoad.click();
});

Expand All @@ -56,7 +54,7 @@ describe("Helpers", () => {
const progressLoader = new Element("html.nprogress-busy");

//Act
await helpers.goToUrlAndLoad("https://www.jqueryscript.net/demo/jQuery-Html5-Based-Preloader-Plugin-html5loader/");
await Helpers.goToUrlAndLoad("https://www.jqueryscript.net/demo/jQuery-Html5-Based-Preloader-Plugin-html5loader/");

//Assert
await expect(progressLoader.exists()).resolves.toBeFalsy();
Expand All @@ -69,7 +67,7 @@ describe("Helpers", () => {
await page.goto("http://the-internet.herokuapp.com/iframe");

//Act
const frame = await helpers.getFrame(iFrameSelector);
const frame = await Helpers.getFrame(iFrameSelector);
const textContent = await frame.$eval(textFrameSelector, element => element.textContent);

//Assert
Expand Down
23 changes: 10 additions & 13 deletions example/tests/interceptor.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,6 @@ const successMessage = new Element(".alert-success");
const addToCartButton = new Element(".product-layout:nth-child(1) > div button:nth-child(1)");

describe("Interceptor", () => {
let helpers = new Helpers();
let interceptor = new Interceptor();

beforeEach(async () => {
console.log(`Running test: '${jasmine["currentTest"].fullName}'`);
//this is workaraound to avoid 'Request is already handled!' error. Shoud be removed when https://github.com/smooth-code/jest-puppeteer/issues/308 defect is fixed.
Expand All @@ -21,7 +18,7 @@ describe("Interceptor", () => {
const navBar = new Element(".navbar");
const requestUrlFragment = "topmenu";

await interceptor.abortRequests(requestUrlFragment);
await Interceptor.abortRequests(requestUrlFragment);

//Act
await page.goto(DemoGuruSite);
Expand All @@ -48,7 +45,7 @@ describe("Interceptor", () => {
await expect(navBar.exists()).resolves.toBeTruthy();

//Act
await interceptor.abortRequests(requestUrlFragment);
await Interceptor.abortRequests(requestUrlFragment);
await page.reload( { waitUntil: "networkidle2" } );

//Assert
Expand All @@ -59,7 +56,7 @@ describe("Interceptor", () => {
//Arrange
const navBar = new Element(".navbar");
const requestUrlFragment = "topmenu";
await interceptor.abortRequestsDuringAction(page.goto(DemoGuruSite), requestUrlFragment);
await Interceptor.abortRequestsDuringAction(page.goto(DemoGuruSite), requestUrlFragment);

//Assert
await expect(navBar.exists()).resolves.toBeFalsy();
Expand All @@ -73,22 +70,22 @@ describe("Interceptor", () => {

it("should block any request during action", async () => {
//Arrange
await helpers.goToUrlAndLoad(DemoOpenCartSite);
await Helpers.goToUrlAndLoad(DemoOpenCartSite);
await page.on("dialog", dialog => {
console.log(`Alert was detected: '${dialog.message()}'`);
dialog.dismiss();
});

//Act
await interceptor.abortRequestsDuringAction(() => { addToCartButton.click(); });
await Interceptor.abortRequestsDuringAction(() => { addToCartButton.click(); });

//Assert
await expect(successMessage.isVisible()).resolves.toBeFalsy();
});

it("should count all requests", async () => {
//Act
var totalRequests = await interceptor.getAllRequestsData(helpers.goToUrlAndLoad(DemoOpenCartSite));
var totalRequests = await Interceptor.getAllRequestsData(Helpers.goToUrlAndLoad(DemoOpenCartSite));

//Assert
expect(totalRequests.length > 0).toBeTruthy();
Expand All @@ -98,10 +95,10 @@ describe("Interceptor", () => {
it("should detect specific response after action", async () => {
//Arrange
const responsetUrlFragment = "cart/info";
await helpers.goToUrlAndLoad(DemoOpenCartSite);
await Helpers.goToUrlAndLoad(DemoOpenCartSite);

//Act
var responseAfterAction = await interceptor.waitForResponseAfterAction(addToCartButton.click(), responsetUrlFragment);
var responseAfterAction = await Interceptor.waitForResponseAfterAction(addToCartButton.click(), responsetUrlFragment);

//Assert
await expect(successMessage.isVisible()).resolves.toBeTruthy();
Expand All @@ -112,10 +109,10 @@ describe("Interceptor", () => {

it("should detect any request after action", async () => {
//Arrange
await helpers.goToUrlAndLoad(DemoOpenCartSite);
await Helpers.goToUrlAndLoad(DemoOpenCartSite);

//Act
var requestAfterAction = await interceptor.waitForRequestAfterAction(addToCartButton.click());
var requestAfterAction = await Interceptor.waitForRequestAfterAction(addToCartButton.click());

//Assert
await expect(successMessage.isVisible()).resolves.toBeTruthy();
Expand Down
8 changes: 3 additions & 5 deletions framework/Element.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,6 @@
import Helpers from "./helpers";

const config = require(process.cwd() + "/framework.config");
var helpers = new Helpers();

const defaultTimeout = config.defaultTimeout;
const shortTimeout = config.shortTimeout;

Expand All @@ -24,7 +22,7 @@ export default class Element {
console.log(`Waiting for ${this.selector} ...`);
const elementHandle = await page.waitFor(this.selector, { timeout: timeout });
if (config.captureScreenshots) {
await helpers.takeScreenshot();
await Helpers.takeScreenshot();
}
return elementHandle;
}
Expand All @@ -33,7 +31,7 @@ export default class Element {
console.log(`Waiting for ${this.selector} to be visible...`);
const elementHandle = await page.waitFor(this.selector, { visible: true, timeout: timeout });
if (config.captureScreenshots) {
await helpers.takeScreenshot();
await Helpers.takeScreenshot();
}
return elementHandle;
}
Expand All @@ -42,7 +40,7 @@ export default class Element {
console.log(`Waiting for ${this.selector} to be invisible...`);
await page.waitFor(this.selector, { hidden: true, timeout: timeout });
if (config.captureScreenshots) {
await helpers.takeScreenshot();
await Helpers.takeScreenshot();
}
}

Expand Down
6 changes: 4 additions & 2 deletions framework/helpers.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
const fs = require("fs");
const retry = require("async-retry");

export default class Helpers {
class Helpers {
async takeScreenshot(filename) {
var targetDir = `./logs/${jasmine["currentSuite"].fullName}`;
if (typeof jasmine["currentTest"] !== "undefined") {
Expand Down Expand Up @@ -35,4 +35,6 @@ export default class Helpers {
const elementHandle = await page.$(selector);
return await elementHandle.contentFrame();
}
}
}

export default new Helpers();
6 changes: 4 additions & 2 deletions framework/interceptor.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
/*global page*/
const fs = require("fs");

export default class Interceptor {
class Interceptor {
async takeScreenshot(filename) {
const targetDir = `./logs/${jasmine["currentSuite"].fullName}/${jasmine["currentTest"].description}`;
fs.mkdirSync(targetDir, { recursive: true });
Expand Down Expand Up @@ -53,4 +53,6 @@ export default class Interceptor {
console.log(`Url: '${responseAferAction.url()}'`);
return responseAferAction;
}
}
}

export default new Interceptor();

0 comments on commit b39caa6

Please sign in to comment.