wordRotator/tests/specs/shared/playLevels.js
2020-10-17 16:42:59 +02:00

110 lines
3.6 KiB
JavaScript

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(async (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);
});
});