const find = require("../../lib/PromiseSelector"); const $ = find.one; const $$ = find.multiple; const functions = require("../../lib/functions.js"); async function solveLevel() { await functions.pause(500); await browser.executeAsync((delayFactor, done) => { const delay = 100*delayFactor; let promise = Promise.resolve(); document.querySelectorAll(".segment.segment-parent.rotate-270").forEach(elem => { promise = promise.then(() => new Promise(r => { elem.dispatchEvent(new MouseEvent("mousedown", { bubbles: true })); elem.dispatchEvent(new MouseEvent("mouseup")); setTimeout(r, delay); })) }); document.querySelectorAll(".segment.segment-parent.rotate-180").forEach(elem => { promise = promise.then(() => new Promise(r => { elem.dispatchEvent(new MouseEvent("mousedown", { bubbles: true })); elem.dispatchEvent(new MouseEvent("mouseup")); setTimeout(r, delay); })) promise = promise.then(() => new Promise(r => { elem.dispatchEvent(new MouseEvent("mousedown", { bubbles: true })); elem.dispatchEvent(new MouseEvent("mouseup")); setTimeout(r, delay); })) }); document.querySelectorAll(".segment.segment-parent.rotate-90").forEach(elem => { promise = promise.then(() => new Promise(r => { elem.dispatchEvent(new MouseEvent("mousedown", { bubbles: true })); elem.dispatchEvent(new MouseEvent("mouseup")); setTimeout(r, delay); })) promise = promise.then(() => new Promise(r => { elem.dispatchEvent(new MouseEvent("mousedown", { bubbles: true })); elem.dispatchEvent(new MouseEvent("mouseup")); setTimeout(r, delay); })) promise = promise.then(() => new Promise(r => { elem.dispatchEvent(new MouseEvent("mousedown", { bubbles: true })); elem.dispatchEvent(new MouseEvent("mouseup")); setTimeout(r, delay); })) }); promise.then(() => done()); }, browser.config.delayFactor) await find.one("#won-text").isDisplayed(); await find.one("#continue-button").click(); } describe("fsj suite", () => { jasmine.DEFAULT_TIMEOUT_INTERVAL = 3*60*60 * 1000 ; let baseUrl = null; beforeAll(async () => { if (browser.config.baseUrl.trim() !== "") { baseUrl = browser.config.baseUrl; } else { baseUrl = await browser.getUrl(); } await browser.setTimeout({ implicit: 5000 }); }); beforeEach(async function () { await browser.url(baseUrl); await browser.waitUntil(async () => { let element = $("#main-content"); return await element.isDisplayed() }); // await functions.acceptCookies(); await find.one("#play-button").click(); }); it("play all levels", async function () { await find.one("#level .segment").isDisplayed(); await solveLevel(); await find.one(".help-action").click(); while (await find.one("#level").isDisplayed()) { await solveLevel(); } // await functions.pause(5000); }); });