Fertig für Android

This commit is contained in:
silas 2018-10-27 18:57:45 +02:00
parent f89354ea03
commit f82aff9442
10 changed files with 108 additions and 65 deletions

View File

@ -1,2 +1,4 @@
#!/usr/bin/env bash
cd $(dirname "$0")/..
npm run build 2

View File

@ -1,3 +1,5 @@
#!/usr/bin/env bash
cd $(dirname "$0")/..
rm -rf /var/www/pwa/wordRotator/vendor/ainias/$2
ln -s $1 /var/www/pwa/wordRotator/vendor/ainias/$2

View File

@ -1,4 +1,6 @@
#!/usr/bin/env bash
cd $(dirname "$0")/..
testcafe firefox test/test.testcafe.js
#testcafe remote test/test.testcafe.js
#node bin/testcafe.js;

25
bin/testcafe.js Normal file
View File

@ -0,0 +1,25 @@
'use strict';
const createTestCafe = require('testcafe');
const selfSignedSertificate = require('openssl-self-signed-certificate');
let runner = null;
const sslOptions = {
key: selfSignedSertificate.key,
cert: selfSignedSertificate.cert
};
createTestCafe('192.168.0.51', 5000, 5001, sslOptions).then(async testcafe => {
runner = testcafe.createRunner();
let remoteConnection = await testcafe.createBrowserConnection();
console.log(remoteConnection.url);
remoteConnection.once('ready', () => {
console.log("testing...");
return runner.src('test/test.testcafe.js').browsers(remoteConnection).run({debugOnFail: true}).then(failedCount => {
testcafe.close();
});
});
});

View File

@ -24,7 +24,8 @@
"rollup": "^0.57.1",
"rollup-plugin-babel": "^3.0.3",
"uglify-es": "^3.3.9",
"testcafe": "^0.22.1-alpha.3"
"testcafe": "^0.22.1-alpha.3",
"openssl-self-signed-certificate": "^1.1.6"
},
"input": "src/js/init.js",
"output": "public/js/app.js",

File diff suppressed because one or more lines are too long

View File

@ -418,10 +418,14 @@ class SoundManager {
return this.channels[channel];
}
async play(channel, audioOrOptions) {
async resume(){
if (typeof this.context.resume === "function") {
this.context.resume();
return this.context.resume();
}
}
async play(channel, audioOrOptions) {
this.resume();
channel = Helper.nonNull(channel, SoundManager.CHANNELS.DEFAULT);
if (Helper.isNull(audioOrOptions)) {
audioOrOptions = {};

View File

@ -97,7 +97,7 @@ export class MenuSite extends WordRotatorBaseSite {
}
async startLevelSite() {
SoundManager.getInstance().context.resume();
SoundManager.getInstance().resume();
this.startSite(LevelSite, Promise.race([this.loadLevelPromise, new Promise(async resolve => {
const db = WordRotatorDb.getInstance();
let level = await db.loadNextLevel(LevelSite.RENDERER_TYPES);

View File

@ -17,10 +17,10 @@ export class ParentSegment extends Segment {
ParentSegment.mouseDownTarget = e.targetTouches[0].target;
ParentSegment.clickPosition = {x: e.targetTouches[0].pageX, y: e.targetTouches[0].pageY};
}
else if (Array.isArray(e.path) && e.path.length >= 1) {
ParentSegment.mouseDownTarget = e.path[0];
ParentSegment.clickPosition = null;
}
// else if (Array.isArray(e.path) && e.path.length >= 1) {
// ParentSegment.mouseDownTarget = e.path[0];
// ParentSegment.clickPosition = null;
// }
});
window.addEventListener("touchend", (e) => {
ParentSegment.mouseDownTarget = null;
@ -39,32 +39,49 @@ export class ParentSegment extends Segment {
this.class = "rotate-0";
this.rotatable = true;
this.userRotationDelta = 100;
this.lastUserRotation = 0;
let self = this;
this.touchendListener = function (e) {
let now = new Date().getTime();
// console.log("touchendListener", e,now, self.lastUserRotation);
let target = null;
let position = null;
if (e.changedTouches.length >= 1) {
target = document.elementFromPoint(e.changedTouches[0].pageX, e.changedTouches[0].pageY);
position = {x: e.changedTouches[0].pageX, y: e.changedTouches[0].pageY};
}
else if (Array.isArray(e.path) && e.path.length >= 1) {
target = e.path[0];
}
if (e.targetTouches.length === 0 && self.element.contains(ParentSegment.mouseDownTarget) && self.element.contains(target)) {
self.getLevel().segmentClickedListener(self);
self.rotate(ParentSegment.mouseDownTarget, target, ParentSegment.clickPosition, position);
if (target != null && e.targetTouches.length === 0 && self.element.contains(ParentSegment.mouseDownTarget) && self.element.contains(target)) {
e.stopPropagation();
e.preventDefault();
if (self.lastUserRotation+self.userRotationDelta > now){
return;
}
self.getLevel().segmentClickedListener(self);
self.rotate(ParentSegment.mouseDownTarget, target, ParentSegment.clickPosition, position);
// console.log("touchendListener stopped event", e);
self.lastUserRotation = new Date().getTime();
}
};
this.mouseupListener = function (e) {
let now = new Date().getTime();
// console.log("mouseupListener", e,now, self.lastUserRotation);
if (ParentSegment.mouseDownTarget !== null && self.element.contains(ParentSegment.mouseDownTarget) && self.element.contains(e.target)) {
let position = {x: e.pageX, y: e.pageY};
self.getLevel().segmentClickedListener(self);
self.rotate(ParentSegment.mouseDownTarget, e.target, ParentSegment.clickPosition, position);
e.stopPropagation();
e.preventDefault();
if (self.lastUserRotation+self.userRotationDelta > now){
return;
}
self.getLevel().segmentClickedListener(self);
self.rotate(ParentSegment.mouseDownTarget, e.target, ParentSegment.clickPosition, position);
// console.log("mouseupListener stopped event", e);
self.lastUserRotation = new Date().getTime();
}
};
}

View File

@ -2,7 +2,7 @@ import {Selector} from 'testcafe';
import {ClientFunction} from 'testcafe';
let isLocal = true;
let isMobile = true;
let isMobile = false;
const checkMatrix = async (matrixStringSelector, shouldValues, timeout) => {
let delta = 0.0001;
@ -60,7 +60,7 @@ async function waitForMainMenu(t) {
// console.log("nextIterate");
await t.wait(100);
}
await t.wait(2000);
await t.wait(1000);
}
if (isLocal) {
@ -85,10 +85,10 @@ else {
await afterEachTest(t);
});
}
let dragDimen = 250;
let dragDimen = 280;
if (isMobile){
dragDimen = 50;
dragDimen = 90;
}
const extraCoins = 50;
@ -119,7 +119,7 @@ const SEGMENT = {
TWENTYONE: 20
};
test.only('Play', async t => {
test('Play', async t => {
let levelNumber = 1;
await waitForMainMenu(t);
@ -134,15 +134,14 @@ test.only('Play', async t => {
.expect(Selector('.tutorial-text .step-2').visible).eql(true)
.expect(Selector('.tutorial-text .step-1').visible).eql(false)
.click(Selector('.segment-parent').nth(SEGMENT.THREE))
.expect(Selector('.tutorial-text .step-2').visible).eql(true)
.click(Selector('.segment-parent').nth(SEGMENT.THREE))
.expect(Selector('.tutorial-text .step-2').visible).eql(true);
await t.click(Selector('.segment-parent').nth(SEGMENT.THREE))
.expect(Selector('#continue-button').visible).eql(true)
.click(Selector('#continue-button'))
.wait(1000);
levelNumber++;
//first Level
// await t.debug();
await t.expect(await checkMatrix(Selector('.segment.segment-parent.rotate-90').nth(0).getStyleProperty('transform'), [0, 1, -1, 0])).ok()
.expect(await checkMatrix(Selector('.segment.segment-parent.rotate-90').nth(1).getStyleProperty('transform'), [0, 1, -1, 0])).ok()
.expect(await checkMatrix(Selector('.segment.segment-parent.rotate-270').getStyleProperty('transform'), [0, -1, 1, 0])).ok()
@ -163,7 +162,7 @@ test.only('Play', async t => {
.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 * levelNumber + extraCoins - helpCost));
.expect(Selector('.coin-counter').innerText).contains("" + (coinsPerLevel * levelNumber + extraCoins - helpCost));
levelNumber++;
@ -188,7 +187,7 @@ test.only('Play', async t => {
.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 * levelNumber + extraCoins - helpCost));
.expect(Selector('.coin-counter').innerText).contains("" + (coinsPerLevel * levelNumber + extraCoins - helpCost));
levelNumber++;
//THREE Level
@ -206,11 +205,10 @@ test.only('Play', async t => {
.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 * levelNumber + extraCoins - helpCost));
.expect(Selector('.coin-counter').innerText).contains("" + (coinsPerLevel * levelNumber + extraCoins - helpCost));
levelNumber++;
console.log("dragDimen", dragDimen);
await t.drag(Selector('.segment-parent').nth(SEGMENT.ONE), -dragDimen, 4, {
offsetX: dragDimen + 50,
offsetY: 17
@ -247,24 +245,24 @@ test.only('Play', async t => {
.expect(Selector('.segment-parent').nth(SEGMENT.THIRTEEN).textContent).eql("TUTO")
.expect(Selector('.segment-parent').nth(SEGMENT.FOURTEEN).textContent).eql("NGPF")
.drag(Selector('.segment-parent').nth(SEGMENT.TEN), dragDimen, 4, {
offsetX: 54,
offsetY: 17
offsetX: dragDimen/5,
offsetY: 10
})
.drag(Selector('.segment-parent').nth(SEGMENT.ONE), dragDimen, 3, {
offsetX: 54,
offsetY: 17
offsetX: dragDimen/5,
offsetY: 10
})
.drag(Selector('.segment-parent').nth(SEGMENT.TEN).find('div').withText('I'), dragDimen, 4, {
offsetX: 27,
offsetY: 41
offsetX: dragDimen/5,
offsetY: dragDimen/5
})
.drag(Selector('.segment-parent').nth(SEGMENT.ONE).find('div').withText('S'), 10, dragDimen, {
offsetX: dragDimen,
offsetY: 32
offsetY: dragDimen/5
})
.drag(Selector('.segment-parent').nth(SEGMENT.TEN), dragDimen, 4, {
offsetX: 27,
offsetY: 41
offsetX: 10,
offsetY: dragDimen/5
})
.click(Selector('.segment-parent').nth(SEGMENT.NINE))
.click(Selector('.segment-parent').nth(SEGMENT.EIGHT))
@ -285,7 +283,7 @@ test.only('Play', async t => {
.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 * levelNumber + extraCoins - helpCost));
.expect(Selector('.coin-counter').innerText).contains("" + (coinsPerLevel * levelNumber + extraCoins - helpCost));
levelNumber++;
@ -300,28 +298,20 @@ test.only('Play', async t => {
.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
offsetX: 10,
offsetY: dragDimen/5
})
.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 * levelNumber + extraCoins - helpCost));
.expect(Selector('.coin-counter').innerText).contains("" + (coinsPerLevel * levelNumber + extraCoins - helpCost));
levelNumber++;
//Level 6
@ -335,8 +325,8 @@ test.only('Play', async t => {
.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
offsetX: 10,
offsetY: 10
})
.click(Selector('.segment-parent').nth(SEGMENT.FOUR))
.click(Selector('.segment-parent').nth(SEGMENT.SIX))
@ -366,14 +356,14 @@ test.only('Play', async t => {
.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
offsetX: 10,
offsetY: 10
})
.expect(await checkMatrix(Selector('div').withText('P').nth(11).find('.segment.segment-parent.layer-2.rotate-360').getStyleProperty('transform'), [1, 0, 0, 1, ])).ok()
.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 * levelNumber + extraCoins - helpCost));
.expect(Selector('.coin-counter').innerText).contains("" + (coinsPerLevel * levelNumber + extraCoins - helpCost));
levelNumber++;
//Level 7
@ -381,15 +371,15 @@ test.only('Play', async t => {
.expect(Selector('.segment-row > .child-container').childElementCount).eql(3)
.drag(Selector('.segment-parent').nth(SEGMENT.ONE), 4, dragDimen, {
offsetX: 50,
offsetY: 73
offsetX: 10,
offsetY: 10
})
.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: dragDimen,
offsetY: 57
offsetX: 10,
offsetY: 10
})
.click(Selector('.segment-parent').nth(SEGMENT.THREE))
.click(Selector('.segment-parent').nth(SEGMENT.EIGHT))
@ -403,12 +393,12 @@ test.only('Play', async t => {
.click(Selector('.segment-parent').nth(SEGMENT.NINE))
.click(Selector('.segment-parent').nth(SEGMENT.FOUR))
.drag(Selector('.segment-parent').nth(SEGMENT.ELEVEN), 14, dragDimen, {
offsetX: dragDimen,
offsetY: 57
offsetX: 10,
offsetY: 10
})
.click(Selector('#help-button'))
.wait(5000)
.expect(Selector('.coin-counter').innerText).eql("" + (coinsPerLevel * levelNumber - helpCost + extraCoins - helpCost))
.expect(Selector('.coin-counter').innerText).contains("" + (coinsPerLevel * levelNumber - helpCost + extraCoins - helpCost))
.expect(Selector('#won-text').visible).eql(true)
.expect(Selector('#continue-button').visible).eql(true)