diff --git a/bin/test.sh b/bin/test.sh index 4cd3afd..d04a31d 100644 --- a/bin/test.sh +++ b/bin/test.sh @@ -1,4 +1,4 @@ #!/usr/bin/env bash -testcafe firefox test/play.testcafe.js -#testcafe firefox test/betaplay.testcafe.js +testcafe firefox test/test.testcafe.js +#testcafe chrome test/betaplay.testcafe.js diff --git a/log/error.log b/log/error.log index b88fe20..d768b71 100755 --- a/log/error.log +++ b/log/error.log @@ -12,3 +12,6 @@ 2018-09-23T00:22:31+02:00 ERR (3): 2018-09-23T20:42:28+02:00 ERR (3): 2018-09-23T20:45:07+02:00 ERR (3): +2018-09-24T12:26:01+02:00 ERR (3): +2018-09-24T12:26:07+02:00 ERR (3): +2018-09-24T12:46:47+02:00 ERR (3): diff --git a/log/log.log b/log/log.log index b88fe20..d768b71 100755 --- a/log/log.log +++ b/log/log.log @@ -12,3 +12,6 @@ 2018-09-23T00:22:31+02:00 ERR (3): 2018-09-23T20:42:28+02:00 ERR (3): 2018-09-23T20:45:07+02:00 ERR (3): +2018-09-24T12:26:01+02:00 ERR (3): +2018-09-24T12:26:07+02:00 ERR (3): +2018-09-24T12:46:47+02:00 ERR (3): diff --git a/public/js/app.js b/public/js/app.js index 044f856..26e8d97 100755 --- a/public/js/app.js +++ b/public/js/app.js @@ -5912,8 +5912,8 @@ class MainMenuLevel extends FourWordsLevel{ saveAsCurrentLevel() { } - checkHasWon(delayPromise) { - } + // checkHasWon(delayPromise) { + // } } class MenuSite extends WordRotatorBaseSite { @@ -5923,9 +5923,85 @@ class MenuSite extends WordRotatorBaseSite { this.listener = null; } + onStart(args) { + let res = super.onStart(args); + + let level = new MainMenuLevel(this.templateContainer); + level.setWords(["WORD", "ROTA", "TORW", "ORDR"]); + level.createSegments(); + + level.getWonPromise().then(() => { + console.log("won!"); + this.startSite(LevelSite); + }); + + let segment = level.getRootSegment(); + segment._updateElement(); + + let levelSegment = this.findBy("#level"); + levelSegment.removeAllChildren().appendChild(segment.getElement()); + + let rotationsSegments = level.getRotatableSegments(); + + let randomRotationFunction = () => { + let timeout = Math.random() * 4500 + 1500; + setTimeout(() => { + let indexBlocked = -1; + let indexesNotRight = []; + for (let i = 0; i < rotationsSegments.length; i++) { + if (rotationsSegments[i].rotation !== 0) { + indexesNotRight.push(i); + if (indexesNotRight.length >= 2) { + break; + } + } + } + if (indexesNotRight.length === 1) { + indexBlocked = indexesNotRight[0]; + } + + let index = Math.floor(Math.random() * rotationsSegments.length); + if (index === indexBlocked) { + index = (index + 1) % rotationsSegments.length; + } + rotationsSegments[index].rotate(); + randomRotationFunction(); + }, timeout); + }; + randomRotationFunction(); + + this.listener = async () => { + let playButton = this.findBy("#play-button"); + let levelNumber = this.findBy("#level-number"); + levelNumber.innerText = Helper.nonNull(localStorage.getItem("levelCounter"), 1); + + let levelSegment = this.findBy("#level"); + + let scaleHelper = new ScaleHelper(); + scaleHelper.scaleToFull(levelSegment, levelSegment.parentElement, false, false, 2, 8, null, false); + + let levelStyle = getComputedStyle(levelSegment); + playButton.style.width = levelStyle.getPropertyValue("width"); + scaleHelper.scaleToFull(playButton.children[0], playButton, null, null, null, null, null, false); + + await scaleHelper.scaleTo(0.15, levelNumber.parentElement, levelNumber.parentElement.parentElement, null, null, null, 10, null, false); + scaleHelper.scaleToFull(levelNumber, levelNumber.parentElement, false, false, 8, null, null, false); + }; + + this.listener(); + window.addEventListener("resize", this.listener); + + return res; + } + async onFirstStart() { super.onFirstStart(); + let playButton = this.findBy("#play-button"); + playButton.addEventListener("click", () => { + this.startSite(LevelSite); + }); + let leafSegmentTemplate = this.findBy("#segment-leaf-template"); let parentSegmentTemplate = this.findBy("#segment-parent-template"); let rowSegmentTemplate = this.findBy("#segment-row-template"); @@ -5941,61 +6017,12 @@ class MenuSite extends WordRotatorBaseSite { rowSegmentTemplate.remove(); triangleTemplate.remove(); - let templateContainer = new TemplateContainer(leafSegmentTemplate, parentSegmentTemplate, rowSegmentTemplate, triangleTemplate); - let level = new MainMenuLevel(templateContainer); - level.setWords(["WORD", "ROTA", "TORW", "ORDR"]); - level.createSegments(); - - level.getWonPromise().then(() => { - console.log("won!"); - }); - - let segment = level.getRootSegment(); - segment._updateElement(); - - let levelSegment = this.findBy("#level"); - levelSegment.removeAllChildren().appendChild(segment.getElement()); - - let playButton = this.findBy("#play-button"); - playButton.addEventListener("click", () => { - this.startSite(LevelSite); - }); - - - this.listener = async () => { - let levelNumber = this.findBy("#level-number"); - levelNumber.innerText = Helper.nonNull(localStorage.getItem("levelCounter"), 1); - - let scaleHelper = new ScaleHelper(); - scaleHelper.scaleToFull(levelSegment, levelSegment.parentElement, false, false, 2, 8, null, false); - - let levelStyle = getComputedStyle(levelSegment); - playButton.style.width = levelStyle.getPropertyValue("width"); - scaleHelper.scaleToFull(playButton.children[0], playButton, null, null, null, null ,null ,false); - - await scaleHelper.scaleTo(0.15, levelNumber.parentElement, levelNumber.parentElement.parentElement, null, null, null, 10 ,null ,false); - scaleHelper.scaleToFull(levelNumber, levelNumber.parentElement, false, false, 8, null, null, false); - }; - - this.listener(); - window.addEventListener("resize", this.listener); - - let rotationsSegments = level.getRotatableSegments(); - - let randomRotationFunction = () => { - let timeout = Math.random()*6000+1500; - setTimeout(() => { - let index = Math.floor(Math.random()*rotationsSegments.length); - rotationsSegments[index].rotate(); - randomRotationFunction(); - },timeout); - }; - randomRotationFunction(); + this.templateContainer = new TemplateContainer(leafSegmentTemplate, parentSegmentTemplate, rowSegmentTemplate, triangleTemplate); } - onDestroy() { + onPause(args) { window.removeEventListener("resize", this.listener); - super.onDestroy(); + super.onPause(args); } } diff --git a/src/module/Application/pwa/js/site/MenuSite.js b/src/module/Application/pwa/js/site/MenuSite.js index 26710c8..643f062 100644 --- a/src/module/Application/pwa/js/site/MenuSite.js +++ b/src/module/Application/pwa/js/site/MenuSite.js @@ -12,9 +12,84 @@ export class MenuSite extends WordRotatorBaseSite { this.listener = null; } + onStart(args) { + let res = super.onStart(args); + + let level = new MainMenuLevel(this.templateContainer); + level.setWords(["WORD", "ROTA", "TORW", "ORDR"]); + level.createSegments(); + + level.getWonPromise().then(() => { + this.startSite(LevelSite); + }); + + let segment = level.getRootSegment(); + segment._updateElement(); + + let levelSegment = this.findBy("#level"); + levelSegment.removeAllChildren().appendChild(segment.getElement()); + + let rotationsSegments = level.getRotatableSegments(); + + let randomRotationFunction = () => { + let timeout = Math.random() * 4500 + 1500; + setTimeout(() => { + let indexBlocked = -1; + let indexesNotRight = []; + for (let i = 0; i < rotationsSegments.length; i++) { + if (rotationsSegments[i].rotation !== 0) { + indexesNotRight.push(i); + if (indexesNotRight.length >= 2) { + break; + } + } + } + if (indexesNotRight.length === 1) { + indexBlocked = indexesNotRight[0]; + } + + let index = Math.floor(Math.random() * rotationsSegments.length); + if (index === indexBlocked) { + index = (index + 1) % rotationsSegments.length; + } + rotationsSegments[index].rotate(); + randomRotationFunction(); + }, timeout); + }; + randomRotationFunction(); + + this.listener = async () => { + let playButton = this.findBy("#play-button"); + let levelNumber = this.findBy("#level-number"); + levelNumber.innerText = Helper.nonNull(localStorage.getItem("levelCounter"), 1); + + let levelSegment = this.findBy("#level"); + + let scaleHelper = new ScaleHelper(); + scaleHelper.scaleToFull(levelSegment, levelSegment.parentElement, false, false, 2, 8, null, false); + + let levelStyle = getComputedStyle(levelSegment); + playButton.style.width = levelStyle.getPropertyValue("width"); + scaleHelper.scaleToFull(playButton.children[0], playButton, null, null, null, null, null, false); + + await scaleHelper.scaleTo(0.15, levelNumber.parentElement, levelNumber.parentElement.parentElement, null, null, null, 10, null, false); + scaleHelper.scaleToFull(levelNumber, levelNumber.parentElement, false, false, 8, null, null, false); + }; + + this.listener(); + window.addEventListener("resize", this.listener); + + return res; + } + async onFirstStart() { super.onFirstStart(); + let playButton = this.findBy("#play-button"); + playButton.addEventListener("click", () => { + this.startSite(LevelSite); + }); + let leafSegmentTemplate = this.findBy("#segment-leaf-template"); let parentSegmentTemplate = this.findBy("#segment-parent-template"); let rowSegmentTemplate = this.findBy("#segment-row-template"); @@ -30,60 +105,11 @@ export class MenuSite extends WordRotatorBaseSite { rowSegmentTemplate.remove(); triangleTemplate.remove(); - let templateContainer = new TemplateContainer(leafSegmentTemplate, parentSegmentTemplate, rowSegmentTemplate, triangleTemplate); - let level = new MainMenuLevel(templateContainer); - level.setWords(["WORD", "ROTA", "TORW", "ORDR"]); - level.createSegments(); - - level.getWonPromise().then(() => { - console.log("won!"); - }); - - let segment = level.getRootSegment(); - segment._updateElement(); - - let levelSegment = this.findBy("#level"); - levelSegment.removeAllChildren().appendChild(segment.getElement()); - - let playButton = this.findBy("#play-button"); - playButton.addEventListener("click", () => { - this.startSite(LevelSite); - }); - - - this.listener = async () => { - let levelNumber = this.findBy("#level-number"); - levelNumber.innerText = Helper.nonNull(localStorage.getItem("levelCounter"), 1); - - let scaleHelper = new ScaleHelper(); - scaleHelper.scaleToFull(levelSegment, levelSegment.parentElement, false, false, 2, 8, null, false); - - let levelStyle = getComputedStyle(levelSegment); - playButton.style.width = levelStyle.getPropertyValue("width"); - scaleHelper.scaleToFull(playButton.children[0], playButton, null, null, null, null ,null ,false); - - await scaleHelper.scaleTo(0.15, levelNumber.parentElement, levelNumber.parentElement.parentElement, null, null, null, 10 ,null ,false); - scaleHelper.scaleToFull(levelNumber, levelNumber.parentElement, false, false, 8, null, null, false); - }; - - this.listener(); - window.addEventListener("resize", this.listener); - - let rotationsSegments = level.getRotatableSegments(); - - let randomRotationFunction = () => { - let timeout = Math.random()*6000+1500; - setTimeout(() => { - let index = Math.floor(Math.random()*rotationsSegments.length); - rotationsSegments[index].rotate(); - randomRotationFunction(); - },timeout); - }; - randomRotationFunction(); + this.templateContainer = new TemplateContainer(leafSegmentTemplate, parentSegmentTemplate, rowSegmentTemplate, triangleTemplate); } - onDestroy() { + onPause(args) { window.removeEventListener("resize", this.listener); - super.onDestroy(); + super.onPause(args); } } \ No newline at end of file diff --git a/src/module/Application/pwa/js/wordrotator/Level/MainMenuLevel.js b/src/module/Application/pwa/js/wordrotator/Level/MainMenuLevel.js index cb6d8fc..1d7b85b 100644 --- a/src/module/Application/pwa/js/wordrotator/Level/MainMenuLevel.js +++ b/src/module/Application/pwa/js/wordrotator/Level/MainMenuLevel.js @@ -9,6 +9,6 @@ export class MainMenuLevel extends FourWordsLevel{ saveAsCurrentLevel() { } - checkHasWon(delayPromise) { - } + // checkHasWon(delayPromise) { + // } } \ No newline at end of file diff --git a/test/betaplay.testcafe.js b/test/betaplay.testcafe.js index 5a87faa..9bdb5c2 100644 --- a/test/betaplay.testcafe.js +++ b/test/betaplay.testcafe.js @@ -1,5 +1,5 @@ import { Selector } from 'testcafe'; -import {mainTest} from "./test"; +import {loadLastLevelTest, mainTest} from "./test"; fixture `betaPlay` @@ -9,8 +9,10 @@ fixture `betaPlay` password: '20luxl200' }); test('Play', async t => { - await t.wait(20000); await mainTest(t); - +}); +test('LoadLastLevel', async t => { + await t.wait(20000); + await loadLastLevelTest(t); }); \ No newline at end of file diff --git a/test/play.testcafe.js b/test/play.testcafe.js deleted file mode 100644 index c3c25a9..0000000 --- a/test/play.testcafe.js +++ /dev/null @@ -1,10 +0,0 @@ -import {Selector} from 'testcafe'; -import {mainTest} from "./test"; - -fixture`Play` - .page`https://127.0.0.1/pwa/wordRotator/publicTest/`; - -test('Play', async t => { - - await mainTest(t); -}); \ No newline at end of file diff --git a/test/test.js b/test/test.js index e217dc7..714eeff 100644 --- a/test/test.js +++ b/test/test.js @@ -3,6 +3,7 @@ import { Selector } from 'testcafe'; export async function mainTest(t){ const coinsPerLevel = 5; const dragDimen = 250; + const helpCost = 25; const SEGMENT = { ONE: 0, @@ -261,7 +262,7 @@ export async function mainTest(t){ .click(Selector('.segment-parent').nth(SEGMENT.EIGHT)) .click(Selector('.segment-parent').nth(SEGMENT.SEVEN)) .click(Selector('.segment-parent').nth(SEGMENT.FOUR)) - .click(Selector('.segment-parent').nth(SEGMENT.THIRTEEN)) + // .click(Selector('.segment-parent').nth(SEGMENT.THIRTEEN)) .click(Selector('.segment-parent').nth(SEGMENT.FIVE)) .click(Selector('.segment-parent').nth(SEGMENT.FOUR)) .click(Selector('.segment-parent').nth(SEGMENT.SEVEN)) @@ -277,12 +278,21 @@ export async function mainTest(t){ offsetX: 50, offsetY: 73 }) - .click(Selector('.segment-parent').nth(SEGMENT.THIRTEEN)) + // .click(Selector('.segment-parent').nth(SEGMENT.THIRTEEN)) + .click(Selector('#help-button')) .wait(5000) - .expect(Selector('.coin-counter').innerText).eql(""+coinsPerLevel*7) + .expect(Selector('.coin-counter').innerText).eql(""+(coinsPerLevel*7-helpCost)) .expect(Selector('#won-text').visible).eql(true) .expect(Selector('#continue-button').visible).eql(true) .click(Selector('#continue-button')) .expect(Selector('#site-content').childElementCount).eql(1); +} + + +export async function beforeLoadLastLevelTest(){ + +} +export async function loadLastLevelTest(t){ + } \ No newline at end of file diff --git a/test/test.testcafe.js b/test/test.testcafe.js new file mode 100644 index 0000000..895112e --- /dev/null +++ b/test/test.testcafe.js @@ -0,0 +1,319 @@ +import {Selector} from 'testcafe'; +import {ClientFunction} from 'testcafe'; + +let isLocal = true; +if (isLocal) { + fixture`Play` + .page`https://127.0.0.1/pwa/wordRotator/publicTest/`; +} +else { + fixture`betaPlay` + .page`http://beta.wordrotator.silas.link` + .httpAuth({ + username: 'admin', + password: '20luxl200' + }).beforeEach(async t => { + await t.wait(20000); + }); +} + +const testLocalStorageSet = ClientFunction((key, value) => { localStorage.setItem(key, value)}); + +const coinsPerLevel = 5; +const dragDimen = 250; +const helpCost = 25; + +const SEGMENT = { + ONE: 0, + TWO: 1, + THREE: 2, + FOUR: 3, + FIVE: 4, + SIX : 5, + SEVEN: 6, + EIGHT : 7, + NINE: 8, + TEN: 9, + ELEVEN: 10, + TWELVE: 11, + THIRTEEN: 12, + FOURTEEN: 13, + FIFTEEN: 14, + SIXTEEN: 15, + SEVENTEEN: 16, + EIGHTEEN:17, + NINETEEN: 18, + TWENTY:19, + TWENTYONE:20 +}; + +test('Play', async t => { + await t + //Main Menu + .click(Selector('#play-button')) + + //first Level + .expect(Selector('.segment.segment-parent.rotate-90').nth(0).getStyleProperty('transform')).eql("matrix(0, 1, -1, 0, 0, 0)") + .expect(Selector('.segment.segment-parent.rotate-90').nth(1).getStyleProperty('transform')).eql("matrix(0, 1, -1, 0, 0, 0)") + .expect(Selector('.segment.segment-parent.rotate-270').getStyleProperty('transform')).eql("matrix(0, -1, 1, 0, 0, 0)") + .expect(Selector('#won-text').visible).eql(false) + .expect(Selector('#continue-button').visible).eql(false) + .expect(Selector('#level-number').textContent).eql("1") + .click(Selector('.segment-parent').nth(SEGMENT.THREE)) + .expect(Selector('.segment.segment-parent.rotate-360').getStyleProperty('transform')).eql("matrix(1, 0, 0, 1, 0, 0)") + .click(Selector('.segment-parent').nth(SEGMENT.ONE)) + .click(Selector('.segment-parent').nth(SEGMENT.TWO)) + .click(Selector('.segment-parent').nth(SEGMENT.ONE)) + .click(Selector('.segment-parent').nth(SEGMENT.TWO)) + .click(Selector('.segment-parent').nth(SEGMENT.ONE)) + .click(Selector('.segment-parent').nth(SEGMENT.TWO)) + .expect(Selector('.segment.segment-parent.rotate-360').nth(1).getStyleProperty('transform')).eql("matrix(1, 0, 0, 1, 0, 0)") + .expect(Selector('#won-text').visible).eql(true) + .expect(Selector('#continue-button').visible).eql(true) + .click(Selector('#continue-button')) + .expect(Selector('.coin-counter').innerText).eql(""+coinsPerLevel) + + //TWOLevel + .expect(Selector('.segment.segment-parent.rotate-270').nth(0).textContent).eql("BOAL") + .expect(Selector('.segment.segment-parent.rotate-180').textContent).eql("DEAR") + .expect(Selector('.segment.segment-parent.rotate-360').textContent).eql("NSMR") + .expect(Selector('.segment.segment-parent.rotate-270').nth(1).textContent).eql("EEUF") + .expect(Selector('.segment.segment-parent.rotate-270').nth(0).getStyleProperty('transform')).eql("matrix(0, -1, 1, 0, 0, 0)") + .expect(Selector('.segment.segment-parent.rotate-180').getStyleProperty('transform')).eql("matrix(-1, 0, 0, -1, 0, 0)") + .expect(Selector('.segment.segment-parent.rotate-360').getStyleProperty('transform')).eql("matrix(1, 0, 0, 1, 0, 0)") + .expect(Selector('.segment.segment-parent.rotate-270').nth(1).getStyleProperty('transform')).eql("matrix(0, -1, 1, 0, 0, 0)") + .expect(Selector('#continue-button').visible).eql(false) + .expect(Selector('#level-number').textContent).eql("2") + .expect(Selector('#won-text').visible).eql(false) + .click(Selector('.segment-parent').nth(SEGMENT.TWO)) + .click(Selector('.segment-parent').nth(SEGMENT.ONE)) + .click(Selector('.segment-parent').nth(SEGMENT.FOUR)) + .click(Selector('.segment-parent').nth(SEGMENT.TWO)) + .expect(Selector('.segment-parent').nth(SEGMENT.TWO).getStyleProperty('transform')).eql("matrix(1, 0, 0, 1, 0, 0)") + .click(Selector('.segment-parent').nth(SEGMENT.TWO)) + .expect(Selector('.segment-parent').nth(SEGMENT.TWO).getStyleProperty('transform')).eql("matrix(1, 0, 0, 1, 0, 0)") + .expect(Selector('#won-text').visible).eql(true) + .expect(Selector('#continue-button').visible).eql(true) + .click(Selector('#continue-button')) + .expect(Selector('.coin-counter').innerText).eql(""+coinsPerLevel*2) + + //THREE Level + .expect(Selector('.segment-parent').nth(SEGMENT.ONE).textContent).eql("ZEHO") + .expect(Selector('.segment-parent').nth(SEGMENT.TWO).textContent).eql("ITCH") + .expect(Selector('.segment-parent').nth(SEGMENT.THREE).textContent).eql("STSA") + .expect(Selector('.segment-parent').nth(SEGMENT.FOUR).textContent).eql("RAIS") + .expect(Selector('.segment-parent').nth(SEGMENT.FIVE).textContent).eql("FEON") + .click(Selector('.segment-parent').nth(SEGMENT.ONE)) + .click(Selector('.segment-parent').nth(SEGMENT.FIVE)) + .click(Selector('.segment-parent').nth(SEGMENT.THREE)) + .click(Selector('.segment-parent').nth(SEGMENT.ONE)) + .click(Selector('.segment-parent').nth(SEGMENT.FIVE)) + .click(Selector('.segment-parent').nth(SEGMENT.ONE)) + .click(Selector('.segment-parent').nth(SEGMENT.FOUR)) + .click(Selector('.segment-parent').nth(SEGMENT.FIVE)) + .click(Selector('#continue-button')) + .expect(Selector('.coin-counter').innerText).eql(""+coinsPerLevel*3) + + //4. Level + .expect(Selector('.segment-parent').nth(SEGMENT.ONE).textContent).eql("FERÜINCKPHREYSSI") + .expect(Selector('.segment-parent').nth(SEGMENT.TWO).textContent).eql("FERÜ") + .expect(Selector('.segment-parent').nth(SEGMENT.THREE).textContent).eql("INCK") + .expect(Selector('.segment-parent').nth(SEGMENT.FOUR).textContent).eql("PHRE") + .expect(Selector('.segment-parent').nth(SEGMENT.FIVE).textContent).eql("YSSI") + .expect(Selector('.segment-parent').nth(SEGMENT.SIX).textContent).eql("BEHE") + .expect(Selector('.segment-parent').nth(SEGMENT.SEVEN).textContent).eql("RARZ") + .expect(Selector('.segment-parent').nth(SEGMENT.EIGHT).textContent).eql("GUFA") + .expect(Selector('.segment-parent').nth(SEGMENT.NINE).textContent).eql("SSLL") + .expect(Selector('.segment-parent').nth(SEGMENT.TEN).textContent).eql("IKDEERNZTULANGND") + .expect(Selector('.segment-parent').nth(SEGMENT.ELEVEN).textContent).eql("IKDE") + .expect(Selector('.segment-parent').nth(SEGMENT.TWELVE).textContent).eql("ERNZ") + .expect(Selector('.segment-parent').nth(SEGMENT.THIRTEEN).textContent).eql("TULA") + .expect(Selector('.segment-parent').nth(SEGMENT.FOURTEEN).textContent).eql("NGND") + .drag(Selector('.segment-parent').nth(SEGMENT.TEN), dragDimen, 4, { + offsetX: 54, + offsetY: 17 + }) + .drag(Selector('.segment-parent').nth(SEGMENT.ONE), dragDimen, 3, { + offsetX: 54, + offsetY: 17 + }) + .drag(Selector('.segment-parent').nth(SEGMENT.TEN).find('div').withText('I'), dragDimen, 4, { + offsetX: 27, + offsetY: 41 + }) + .drag(Selector('.segment-parent').nth(SEGMENT.ONE).find('div').withText('S'), 10, dragDimen, { + offsetX: 64, + offsetY: 32 + }) + .drag(Selector('.segment-parent').nth(SEGMENT.TEN), dragDimen, 4, { + offsetX: 27, + offsetY: 41 + }) + .click(Selector('.segment-parent').nth(SEGMENT.NINE)) + .click(Selector('.segment-parent').nth(SEGMENT.EIGHT)) + .click(Selector('.segment-parent').nth(SEGMENT.NINE)) + .click(Selector('.segment-parent').nth(SEGMENT.FOUR)) + .click(Selector('.segment-parent').nth(SEGMENT.ELEVEN)) + .click(Selector('.segment-parent').nth(SEGMENT.FOUR)) + .click(Selector('.segment-parent').nth(SEGMENT.ELEVEN)) + .click(Selector('.segment-parent').nth(SEGMENT.FIVE)) + .click(Selector('.segment-parent').nth(SEGMENT.FOUR)) + .click(Selector('.segment-parent').nth(SEGMENT.ELEVEN)) + .click(Selector('.segment-parent').nth(SEGMENT.TWELVE)) + .click(Selector('.segment-parent').nth(SEGMENT.FIVE)) + .click(Selector('.segment-parent').nth(SEGMENT.SIX)) + .click(Selector('.segment-parent').nth(SEGMENT.TWELVE)) + .click(Selector('.segment-parent').nth(SEGMENT.SEVEN)) + .click(Selector('.segment-parent').nth(SEGMENT.SIX)) + .expect(Selector('#continue-button').visible).eql(true) + .expect(Selector('#won-text').visible).eql(true) + .click(Selector('#continue-button')) + .expect(Selector('.coin-counter').innerText).eql(""+coinsPerLevel*4) + + //5. Level + .expect(Selector('#level-number').textContent).eql("5") + .expect(Selector('.segment-parent').nth(SEGMENT.ONE).textContent).eql("BEANTOBEALBALEUM") + .expect(Selector('.segment-parent').nth(SEGMENT.SIX).textContent).eql("NUTUNGNGRGHAIEUS") + .expect(Selector('.segment-parent').nth(SEGMENT.ONE).getStyleProperty('transform')).eql("matrix(1, 0, 0, 1, 0, 0)") + .expect(Selector('.segment-parent').nth(SEGMENT.SIX).getStyleProperty('transform')).eql("matrix(0, 1, -1, 0, 0, 0)") + + .click(Selector('.segment-parent').nth(SEGMENT.THREE)) + .click(Selector('.segment-parent').nth(SEGMENT.FOUR)) + .click(Selector('.segment-parent').nth(SEGMENT.TWO)) + .drag(Selector('.segment-parent').nth(SEGMENT.SIX).find('div').withText('U'), 3, dragDimen, { + offsetX: 69, + offsetY: 150 + }) + .click(Selector('.segment-parent').nth(SEGMENT.SEVEN)) + .click(Selector('.segment-parent').nth(SEGMENT.THREE)) + .click(Selector('.segment-parent').nth(SEGMENT.FOUR)) + .click(Selector('.segment-parent').nth(SEGMENT.FIVE)) + .drag(Selector('.segment-parent').nth(SEGMENT.SIX), 3, dragDimen, { + offsetX: 86, + offsetY: 133 + }) + .click(Selector('.segment-parent').nth(SEGMENT.THREE)) + .click(Selector('.segment-parent').nth(SEGMENT.FOUR)) + .click(Selector('.segment-parent').nth(SEGMENT.SEVEN)) + .drag(Selector('.segment-parent').nth(SEGMENT.SIX), 10, dragDimen, { + offsetX: 60, + offsetY: 137 + }) + .expect(Selector('#won-text').visible).eql(true) + .expect(Selector('#continue-button').visible).eql(true) + .click(Selector('#continue-button')) + .expect(Selector('.coin-counter').innerText).eql(""+coinsPerLevel*5) + + + //Level 6 + .expect(Selector('#level-number').textContent).eql("6") + .expect(Selector('.segment-parent').nth(SEGMENT.ONE).textContent).eql("FEGEHLISARBEBERE") + .expect(Selector('.segment-parent').nth(SEGMENT.ONE).getStyleProperty('transform')).eql("matrix(1, 0, 0, 1, 0, 0)") + .expect(Selector('.segment-parent').nth(SEGMENT.TEN).getStyleProperty('transform')).eql("matrix(-1, 0, 0, -1, 0, 0)") + .expect(Selector('.segment-parent').nth(SEGMENT.TEN).textContent).eql("ITITSPSCIKARAROT") + + .click(Selector('.segment-parent').nth(SEGMENT.FOUR)) + .click(Selector('.segment-parent').nth(SEGMENT.SEVEN)) + .click(Selector('.segment-parent').nth(SEGMENT.NINE)) + .drag(Selector('.segment-parent').nth(SEGMENT.TEN).find('div').withText('A'), dragDimen, -4, { + offsetX: 33, + offsetY: 18 + }) + .click(Selector('.segment-parent').nth(SEGMENT.FOUR)) + .click(Selector('.segment-parent').nth(SEGMENT.SIX)) + .click(Selector('.segment-parent').nth(SEGMENT.TWENTY)) + .click(Selector('.segment-parent').nth(SEGMENT.TWELVE)) + .click(Selector('.segment-parent').nth(SEGMENT.NINE)) + .click(Selector('.segment-parent').nth(SEGMENT.THIRTEEN)) + .click(Selector('.segment-parent').nth(SEGMENT.TWENTYONE)) + .click(Selector('.segment-parent').nth(SEGMENT.TWO)) + .click(Selector('.segment-parent').nth(SEGMENT.EIGHT)) + .click(Selector('.segment-parent').nth(SEGMENT.ELEVEN)) + .click(Selector('.segment-parent').nth(SEGMENT.NINE)) + .click(Selector('.segment-parent').nth(SEGMENT.TWELVE)) + .click(Selector('.segment-parent').nth(SEGMENT.FOUR)) + .click(Selector('.segment-parent').nth(SEGMENT.FOURTEEN)) + .click(Selector('.segment-parent').nth(SEGMENT.SEVEN)) + .click(Selector('.segment-parent').nth(SEGMENT.SIXTEEN)) + .click(Selector('.segment-parent').nth(SEGMENT.TWELVE)) + .click(Selector('.segment-parent').nth(SEGMENT.NINETEEN)) + .click(Selector('.segment-parent').nth(SEGMENT.TWENTYONE)) + .click(Selector('.segment-parent').nth(SEGMENT.TWENTY)) + .click(Selector('.segment-parent').nth(SEGMENT.THIRTEEN)) + .click(Selector('.segment-parent').nth(SEGMENT.TWENTY)) + .click(Selector('.segment-parent').nth(SEGMENT.SEVENTEEN)) + .click(Selector('.segment-parent').nth(SEGMENT.SIXTEEN)) + .click(Selector('.segment-parent').nth(SEGMENT.FOURTEEN)) + .click(Selector('.segment-parent').nth(SEGMENT.NINETEEN)) + .click(Selector('.segment-parent').nth(SEGMENT.TWENTYONE)) + .drag(Selector('.segment-parent').nth(SEGMENT.TEN).find('div').withText('P'), dragDimen, -3, { + offsetX: 22, + offsetY: 16 + }) + .expect(Selector('div').withText('P').nth(11).find('.segment.segment-parent.layer-2.rotate-360').getStyleProperty('transform')).eql("matrix(1, 0, 0, 1, 0, 0)") + .expect(Selector('#continue-button').visible).eql(true) + .expect(Selector('#won-text').visible).eql(true) + .click(Selector('#continue-button')) + .expect(Selector('.coin-counter').innerText).eql(""+coinsPerLevel*6) + + + //Level 7 + .expect(Selector('.segment-parent').nth(SEGMENT.SIX).getStyleProperty('transform')).eql("matrix(1, 0, 0, 1, 0, 0)") + .expect(Selector('.segment-row > .child-container').childElementCount).eql(3) + + .drag(Selector('.segment-parent').nth(SEGMENT.ONE), 4, dragDimen, { + offsetX: 50, + offsetY: 73 + }) + + .click(Selector('.segment-parent').nth(SEGMENT.SEVEN)) + .click(Selector('.segment-parent').nth(SEGMENT.THIRTEEN)) + .click(Selector('.segment-parent').nth(SEGMENT.TWO)) + .drag(Selector('.segment-parent').nth(SEGMENT.ELEVEN), 14, dragDimen, { + offsetX: 55, + offsetY: 57 + }) + .drag(Selector('.segment-parent').nth(SEGMENT.ONE), 4, dragDimen, { + offsetX: 50, + offsetY: 73 + }) + .click(Selector('.segment-parent').nth(SEGMENT.THREE)) + .click(Selector('.segment-parent').nth(SEGMENT.EIGHT)) + .click(Selector('.segment-parent').nth(SEGMENT.SEVEN)) + .click(Selector('.segment-parent').nth(SEGMENT.FOUR)) + // .click(Selector('.segment-parent').nth(SEGMENT.THIRTEEN)) + .click(Selector('.segment-parent').nth(SEGMENT.FIVE)) + .click(Selector('.segment-parent').nth(SEGMENT.FOUR)) + .click(Selector('.segment-parent').nth(SEGMENT.SEVEN)) + .click(Selector('.segment-parent').nth(SEGMENT.THREE)) + .click(Selector('.segment-parent').nth(SEGMENT.EIGHT)) + .click(Selector('.segment-parent').nth(SEGMENT.NINE)) + .click(Selector('.segment-parent').nth(SEGMENT.FOUR)) + .drag(Selector('.segment-parent').nth(SEGMENT.ELEVEN), 14, dragDimen, { + offsetX: 55, + offsetY: 57 + }) + .drag(Selector('.segment-parent').nth(SEGMENT.ONE), 4, dragDimen, { + offsetX: 50, + offsetY: 73 + }) + // .click(Selector('.segment-parent').nth(SEGMENT.THIRTEEN)) + .click(Selector('#help-button')) + .wait(5000) + .expect(Selector('.coin-counter').innerText).eql(""+(coinsPerLevel*7-helpCost)) + + .expect(Selector('#won-text').visible).eql(true) + .expect(Selector('#continue-button').visible).eql(true) + .click(Selector('#continue-button')) + .expect(Selector('#site-content').childElementCount).eql(1); +}); +test('LoadLastLevel', async t => { + await t.click(Selector('#play-button')) + .expect(Selector('.segment-parent').nth(SEGMENT.ONE).hasClass('locked')).ok() + .expect(Selector('.segment-parent').nth(SEGMENT.ONE).getStyleProperty('transform')).eql("matrix(1, 0, 0, 1, 0, 0)") + .expect(Selector('.segment-parent').nth(SEGMENT.TWO).getStyleProperty('transform')).eql("matrix(1, 0, 0, 1, 0, 0)") + .expect(Selector('.segment-parent').nth(SEGMENT.THREE).getStyleProperty('transform')).eql("matrix(0, -1, 1, 0, 0, 0)") +}).before(async t => { + // await t. + await testLocalStorageSet("currentLevel", "{\"id\":15,\"rotations\":[0,0,270],\"locks\":[false,true,true]}"); +}); \ No newline at end of file