add undo into tests

master
Peter Babič 3 years ago
parent d120e8d415
commit e64c8c1a54
Signed by: peter.babic
GPG Key ID: 4BB075BC1884BA40
  1. 67
      cypress/integration/spec.js
  2. 10
      src/App.svelte
  3. 36
      src/Triangle.svelte
  4. 4
      src/levels.js

@ -1,22 +1,35 @@
/// <reference types="cypress" />
describe("game should", () => {
it("be able to restart itself", () => {
it("do undo and restart level 1", () => {
cy.visit("/")
cy.get(".level").contains("0").click()
cy.get(".level").first().should("be.visible").click()
cy.get(".div0.hole").should("be.visible")
cy.get(".div1.pole").should("be.visible")
cy.get(".div3.pole").should("be.visible").click()
cy.get(".div3.pick").should("be.visible")
cy.get(".div2.pole").should("be.visible")
cy.get(".div5.pole").should("be.visible").click()
cy.get(".div5.pick").should("be.visible")
cy.get(".div0.dest").should("be.visible").click()
cy.get(".div0.pole").should("be.visible")
cy.get(".div2.hole").should("be.visible")
cy.get(".div5.hole").should("be.visible")
cy.get(".div0.pole").should("be.visible").click()
cy.get(".div1.pole").should("be.visible")
cy.get(".div3.dest").should("be.visible").click()
cy.get(".div3.pole").should("be.visible")
cy.get(".div0.hole").should("be.visible")
cy.get(".div1.hole").should("be.visible")
cy.get(".div3.hole").should("be.visible")
cy.get(".restart").click()
cy.get(".undo").click()
cy.get(".div3.pole").should("be.visible")
cy.get(".div1.pole").should("be.visible")
cy.get(".div0.hole").should("be.visible")
cy.get(".restart").click()
cy.get(".div2.pole").should("be.visible")
})
it("display game over", () => {
it("lose level 7", () => {
cy.visit("/")
cy.get(".level").contains("7").click()
cy.get("[data-cy=gameover]").as("gameover").should("not.be.visible")
cy.get(".div3.pole").click()
@ -31,42 +44,38 @@ describe("game should", () => {
cy.get(".div5.dest").should("be.visible")
cy.get(".div12.dest").click()
cy.get(".div6.pole").click()
cy.get(".div1.dest").should("be.visible")
cy.get(".div8.dest").click()
cy.get(".div12.pole").click()
cy.get(".div5.dest").click()
cy.get(".div1.dest").click()
cy.get(".div0.pole").click()
cy.get(".div3.dest").click()
cy.get(".div2.pole").click()
cy.get(".div7.dest").click()
cy.get(".div3.pole").click()
cy.get(".div12.dest").click()
cy.get(".div5.pole").click()
cy.get(".div14.dest").click()
cy.get("@gameover").should("be.be.visible")
})
it("display victory", () => {
it("win level 7", () => {
cy.visit("/")
cy.get("[data-cy=victory]").as("victory").should("not.be.visible")
cy.get(".level").contains("10").click()
cy.get(".div3.pole").click()
cy.get(".div0.dest").click()
cy.get(".div5.pole").click()
cy.get(".div3.dest").click()
cy.get(".div0.pole").click()
cy.get(".div5.dest").click()
cy.get(".div6.pole").click()
cy.get(".div1.dest").click()
cy.get(".div9.pole").click()
cy.get(".div2.dest").click()
cy.get(".div11.pole").click()
cy.get(".div4.dest").click()
cy.get(".div12.pole").click()
cy.get(".div5.dest").click()
cy.get(".div9.pole").click()
cy.get(".div7.dest").click()
cy.get(".div1.pole").click()
cy.get(".div8.dest").click()
cy.get(".div2.pole").click()
cy.get(".div9.dest").click()
cy.get(".div6.pole").click()
cy.get(".div1.dest").click()
cy.get(".div0.pole").click()
cy.get(".div3.dest").click()
cy.get(".div13.pole").click()
cy.get(".div11.dest").click()
cy.get(".div3.pole").click()
cy.get(".div12.dest").click()
cy.get(".div11.pole").click()
cy.get(".div13.dest").click()
cy.get(".div14.pole").click()
cy.get(".div5.dest").click()
cy.get(".div5.pole").click()

@ -2,7 +2,7 @@
import Triangle from "./Triangle.svelte"
import { levels } from "./levels.js"
let level = 10
let level = 0
$: variant = levels[level].variant
$: side = levels[level].side
@ -12,7 +12,8 @@
</script>
<style>
button {
.level {
cursor: pointer;
margin-right: 10px;
}
@ -27,6 +28,9 @@
<Triangle {side} {variant} />
{#each levels as _, value}
<button on:click={changeLevel} {value}>{value}</button>
<button
class="level"
on:click={changeLevel}
{value}>{value + 1}</button>
{/each}
</main>

@ -54,7 +54,6 @@
<script>
import { levels, colors } from "./levels.js"
import { onMount } from "svelte"
import { crossfade, scale } from "svelte/transition"
export let side = 5
@ -73,10 +72,6 @@
fallback: scale,
})
onMount(() => {
restart()
})
$: if (variant || side) {
restart()
}
@ -110,7 +105,7 @@
}
}
// printSolutions(1)
printSolutions(1)
}
const undo = () => {
@ -345,6 +340,11 @@
clip-path: circle();
text-align: center;
color: white;
}
.pole,
.pick,
.dest {
cursor: pointer;
}
@ -441,22 +441,20 @@
display: none;
}
.restart,
.undo {
display: inline;
cursor: pointer;
}
.gameover,
.victory {
display: inline;
}
button {
cursor: pointer;
}
</style>
<span class="restart" on:click={restart}>RESTART GAME</span>
<span class="undo" on:click={undo}> | UNDO</span>
<span data-cy="gameover" class:gameover> | GAME OVER</span>
<span data-cy="victory" class:victory> | VICTORY</span>
<button class="restart" on:click={restart}>RESTART GAME</button>
<button class="undo" on:click={undo}>UNDO</button>
<span data-cy="gameover" class:gameover>GAME OVER</span>
<span data-cy="victory" class:victory>VICTORY</span>
<div class="triangle">
{#each circles as _, i}
@ -473,7 +471,7 @@
<div
in:receive={{ key: i }}
out:send={{ key: i }}
class="circle div{i} {circleColors[i]}"
class="circle div{i} pole {circleColors[i]}"
on:click={() => change(i)}>
{i}
</div>
@ -482,7 +480,7 @@
<div
in:receive={{ key: i }}
out:send={{ key: i }}
class="circle div{i} {circleColors[i]}-lighter"
class="circle div{i} pick {circleColors[i]}-lighter"
on:click={() => change(i)}>
{i}
</div>
@ -491,7 +489,7 @@
<div
in:receive={{ key: i }}
out:send={{ key: i }}
class="circle div{i} {getDestColor()}-darker"
class="circle div{i} dest {getDestColor()}-darker"
on:click={() => change(i)}>
{i}
</div>

@ -8,8 +8,8 @@ export const levels = [
{ side: 5, variant: 2, holes: [0, 7] }, // 157024 / 7339 (4.67%)
{ side: 5, variant: 3, holes: [3] }, // 1149568 / 85258 (7.42%)
{ side: 5, variant: 4, holes: [0] }, // 568630 / 29760 (5.23%)
{ side: 5, variant: 5, holes: [1] }, // 294543 / 14880 (5.05%)
{ side: 5, variant: 6, holes: [4] }, // 137864 / 1550 (1.12%)
// { side: 5, variant: 5, holes: [1] }, // 294543 / 14880 (5.05%)
{ side: 5, variant: 5, holes: [4] }, // 137864 / 1550 (1.12%)
]
export const colors = [

Loading…
Cancel
Save