Commit 9fc1d0c6 authored by Vadim Makeev's avatar Vadim Makeev

Updated test system; 35 brand new tests

parent 5a4437cb
...@@ -11,19 +11,28 @@ module.exports = function(grunt) { ...@@ -11,19 +11,28 @@ module.exports = function(grunt) {
dest: 'shower.min.js' dest: 'shower.min.js'
} }
}, },
connect: {
ribbon: {
options: {
port: 7497
}
}
},
dalek: { dalek: {
test: { options: {
browser: ['chrome']
},
src: [ src: [
'tests/shortcuts.js', 'tests/*.js'
'tests/inner-nav.js'
] ]
} }
}
}); });
grunt.loadNpmTasks('grunt-contrib-uglify'); grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.loadNpmTasks('grunt-contrib-connect');
grunt.loadNpmTasks('grunt-dalek'); grunt.loadNpmTasks('grunt-dalek');
grunt.registerTask('default', ['uglify']); grunt.registerTask('default', ['uglify']);
grunt.registerTask('test', ['connect', 'dalek']);
}; };
\ No newline at end of file
...@@ -6,9 +6,11 @@ ...@@ -6,9 +6,11 @@
"private": true, "private": true,
"devDependencies": { "devDependencies": {
"dalekjs": "0.0.8", "dalekjs": "0.0.8",
"dalek-browser-chrome": "0.0.9",
"grunt": "~0.4.2", "grunt": "~0.4.2",
"grunt-contrib-uglify": "~0.3.0", "grunt-contrib-uglify": "~0.3.2",
"grunt-dalek": "~0.2.0", "grunt-dalek": "~0.2.0",
"grunt-contrib-watch": "~0.5.3" "grunt-contrib-watch": "~0.5.3",
"grunt-contrib-connect": "~0.6.0"
} }
} }
<!DOCTYPE html>
<html lang="en">
<head>
<title>Test page for Shower</title>
<meta charset="utf-8">
<meta name="viewport" content="width=792, user-scalable=no">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<link rel="stylesheet" href="../themes/ribbon/styles/screen.css">
</head>
<body class="list">
<section class="slide"><div>
<h2>1</h2>
</div></section>
<section class="slide"><div>
<h2>2</h2>
</div></section>
<section class="slide" data-timing="00:03"><div>
<h2>3</h2>
</div></section>
<section class="slide"><div>
<h2>4</h2>
</div></section>
<section class="slide"><div>
<h2>5</h2>
<div class="next">1</div>
<div class="next">2</div>
<div class="next">3</div>
</div></section>
<section class="slide"><div>
<h2>6</h2>
</div></section>
<script src="../shower.js"></script>
</body>
</html>
\ No newline at end of file
module.exports = {
// Right
'Right Arrow key is switching .next to .active': function (test) {
test
.open('themes/ribbon/index.html?full#20')
.sendKeys('body', '\uE014') // Right
.assert.attr('[id="20"] li:nth-child(2)', 'class', 'next active', 'First .next is .active')
.done();
}
};
\ No newline at end of file
module.exports = {
'Right Arrow key is switching first Next item to Active': function (test) {
test
.open('http://localhost:7497/tests/?full#5')
.sendKeys('body', '\uE014') // Right
.assert.attr('[id="5"] .next:first-of-type', 'class').to.contain('active', 'First Next item is Active')
.done();
},
'Left Arrow key is switching Active items back to Next': function (test) {
test
.open('http://localhost:7497/tests/?full#5')
.sendKeys('body', '\uE014') // Right
.sendKeys('body', '\uE014') // Right
.sendKeys('body', '\uE012') // Left
.sendKeys('body', '\uE012') // Left
.assert.numberOfElements('[id="5"] .next.active', 0, 'There are no Active items')
.done();
},
'Right Arrow key is switching to next slide once all Next items becomes Active': function (test) {
test
.open('http://localhost:7497/tests/?full#5')
.sendKeys('body', '\uE014') // Right
.sendKeys('body', '\uE014') // Right
.sendKeys('body', '\uE014') // Right
.sendKeys('body', '\uE014') // Right
.assert.attr('[id="6"]', 'class').to.contain('active', 'Next slide is Active')
.done();
},
'Left Arrow key is switching to previous slide when all Next items becomes Active': function (test) {
test
.open('http://localhost:7497/tests/?full#5')
.sendKeys('body', '\uE014') // Right
.sendKeys('body', '\uE014') // Right
.sendKeys('body', '\uE014') // Right
.sendKeys('body', '\uE012') // Left
// Not sure why it’s failing. It works fine manually
.assert.attr('[id="4"]', 'class').to.contain('active', 'Previous slide is Active')
.done();
},
'Reload reset navigation': function (test) {
test
.open('http://localhost:7497/tests/?full#5')
.sendKeys('body', '\uE014') // Right
.reload()
.assert.numberOfElements('[id="5"] .next.active', 0, 'There are no Active items')
.done();
}
};
\ No newline at end of file
module.exports = { module.exports = {
'Body class is switching from `list` to `full` on F5': function (test) { // --------------------------------
// F5
// --------------------------------
'F5 is switching from List to Full': function (test) {
test test
.open('themes/ribbon/index.html') .open('http://localhost:7497/tests/')
.sendKeys('body', '\uE035') // F5 .sendKeys('body', '\uE035') // F5
.assert.attr('body', 'class', 'full', 'Mode is full') .assert.attr('body', 'class', 'full', 'Mode is Full')
.done(); .done();
}, },
// F5 'F5 is switching from Full to List': function (test) {
'Body class is switching from `full` to `list` on F5': function (test) {
test test
.open('themes/ribbon/index.html?full') .open('http://localhost:7497/tests/?full')
.sendKeys('body', '\uE035') // F5 .sendKeys('body', '\uE035') // F5
.assert.attr('body', 'class', 'list', 'Mode is list') .assert.attr('body', 'class', 'list', 'Mode is List')
.done();
},
// --------------------------------
// Cmd Alt P
// --------------------------------
'Cmd Alt P keys are switching from List to Full': function (test) {
test
.open('http://localhost:7497/tests/')
.sendKeys('body', '\uE03D\uE00A\u0070') // Cmd Alt P
.assert.attr('body', 'class', 'full', 'Mode is Full')
.done(); .done();
}, },
// Cmd Alt P — how to test multiple keys? 'Cmd Alt P keys are not switching from Full to List': function (test) {
// 'Body class is switching from `list` to `full` on Cmd Alt P': function (test) { test
// test .open('http://localhost:7497/tests/?full#1')
// .open('themes/ribbon/index.html') .sendKeys('body', '\uE03D\uE00A\u0070') // Cmd Alt P
// .sendKeys('body', '\uE03D\uE00A\u0050') // Cmd Alt P .assert.attr('body', 'class', 'full', 'Mode is Full')
// .assert.attr('body', 'class', 'full') .done();
// .done(); },
// }, // --------------------------------
// Esc // Esc
'Body class is switching from `full` to `list` on Esc': function (test) { // --------------------------------
'Esc is switching from Full to List': function (test) {
test test
.open('themes/ribbon/index.html?full') .open('http://localhost:7497/tests/?full#1')
.sendKeys('body', '\uE00C') // Esc .sendKeys('body', '\uE00C') // Esc
.assert.attr('body', 'class', 'list', 'Mode is list') .assert.attr('body', 'class').to.contain('list', 'Mode is List')
.done(); .done();
}, },
// End // --------------------------------
'End key select the last slide': function (test) { // Left
// --------------------------------
'Left Arrow key is switching to the previous slide': function (test) {
test test
.open('themes/ribbon/index.html') .open('http://localhost:7497/tests/?full#2')
.sendKeys('body', '\uE010') // End .sendKeys('body', '\uE012') // Left
.assert.attr('.slide:last-of-type', 'class', 'slide active', 'Last slide is active') .assert.attr('[id="1"]', 'class').to.contain('active', 'Previous slide is Active')
.done();
},
// --------------------------------
// Right
// --------------------------------
'Right Arrow key is switching to the next slide': function (test) {
test
.open('http://localhost:7497/tests/?full#1')
.sendKeys('body', '\uE014') // Right
.assert.attr('[id="2"]', 'class').to.contain('active', 'Next slide is Active')
.done();
},
// --------------------------------
// Up
// --------------------------------
'Up Arrow key is switching to the previous slide': function (test) {
test
.open('http://localhost:7497/tests/?full#2')
.sendKeys('body', '\uE013') // Up
.assert.attr('[id="1"]', 'class').to.contain('active', 'Previous slide is Active')
.done();
},
// --------------------------------
// Down
// --------------------------------
'Down Arrow key is switching to the next slide': function (test) {
test
.open('http://localhost:7497/tests/?full#1')
.sendKeys('body', '\uE015') // Down
.assert.attr('[id="2"]', 'class').to.contain('active', 'Next slide is Active')
.done();
},
// --------------------------------
// H
// --------------------------------
'H key is switching to the previous slide': function (test) {
test
.open('http://localhost:7497/tests/?full#2')
.sendKeys('body', '\u0068') // H
.assert.attr('[id="1"]', 'class').to.contain('active', 'Previous slide is Active')
.done();
},
// --------------------------------
// K
// --------------------------------
'K key is switching to the previous slide': function (test) {
test
.open('http://localhost:7497/tests/?full#2')
.sendKeys('body', '\u006B') // K
.assert.attr('[id="1"]', 'class').to.contain('active', 'Previous slide is Active')
.done();
},
// --------------------------------
// J
// --------------------------------
'J key is switching to the next slide': function (test) {
test
.open('http://localhost:7497/tests/?full#1')
.sendKeys('body', '\u006A') // J
.assert.attr('[id="2"]', 'class').to.contain('active', 'Next slide is Active')
.done(); .done();
}, },
// --------------------------------
// L
// --------------------------------
'L key is switching to the next slide': function (test) {
test
.open('http://localhost:7497/tests/?full#1')
.sendKeys('body', '\u006C') // L
.assert.attr('[id="2"]', 'class').to.contain('active', 'Next slide is Active')
.done();
},
// --------------------------------
// Space
// --------------------------------
'Space key is switching to the next slide': function (test) {
test
.open('http://localhost:7497/tests/?full#1')
.sendKeys('body', '\uE00D') // Space
.assert.attr('[id="2"]', 'class').to.contain('active', 'Next slide is Active')
.done();
},
'Shift Space keys are switching to the previous slide': function (test) {
test
.open('http://localhost:7497/tests/?full#2')
.sendKeys('body', '\uE008\uE00D') // Shift Space
.assert.attr('[id="1"]', 'class').to.contain('active', 'Previous slide is Active')
.done();
},
// --------------------------------
// Tab
// --------------------------------
'Tab key is switching to the next slide': function (test) {
test
.open('http://localhost:7497/tests/?full#1')
.sendKeys('body', '\uE004') // Tab
// Not sure why it’s failing. It works fine manually
.assert.attr('[id="2"]', 'class').to.contain('active', 'Next slide is Active')
.done();
},
'Shift Tab keys are switching to the previous slide': function (test) {
test
.open('http://localhost:7497/tests/?full#2')
.sendKeys('body', '\uE008\uE004') // Shift Tab
// Not sure why it’s failing. It works fine manually
.assert.attr('[id="1"]', 'class').to.contain('active', 'Previous slide is Active')
.done();
},
// --------------------------------
// PageUp
// --------------------------------
'PageUp key is switching to the previous slide': function (test) {
test
.open('http://localhost:7497/tests/?full#2')
.sendKeys('body', '\uE00E') // PageUp
.assert.attr('[id="1"]', 'class').to.contain('active', 'Previous slide is Active')
.done();
},
// --------------------------------
// PageDown
// --------------------------------
'PageDown key is switching to the next slide': function (test) {
test
.open('http://localhost:7497/tests/?full#1')
.sendKeys('body', '\uE00F') // PageDown
.assert.attr('[id="2"]', 'class').to.contain('active', 'Next slide is Active')
.done();
},
// --------------------------------
// Home // Home
'Home key select the first slide': function (test) { // --------------------------------
'Home key select the first slide in List mode': function (test) {
test test
.open('themes/ribbon/index.html#20') .open('http://localhost:7497/tests/')
.sendKeys('body', '\uE011') // Home .sendKeys('body', '\uE011') // Home
.assert.attr('.slide:first-of-type', 'class', 'slide active', 'First slide is active') // Failing unlike next one with current slide
.assert.attr('[id="1"]', 'class').to.contain('active', 'First slide is active')
.done(); .done();
}, },
'Home key select the first slide in List mode (with current)': function (test) {
test
.open('http://localhost:7497/tests/#5')
.sendKeys('body', '\uE011') // Home
.assert.attr('[id="1"]', 'class').to.contain('active', 'First slide is active')
.done();
},
'Home key select the first slide in Full mode': function (test) {
test
.open('http://localhost:7497/tests/?full#5')
.sendKeys('body', '\uE011') // Home
.assert.attr('[id="1"]', 'class').to.contain('active', 'First slide is active')
.done();
},
// --------------------------------
// End
// --------------------------------
'End key select the last slide in List mode': function (test) {
test
.open('http://localhost:7497/tests/')
.sendKeys('body', '\uE010') // End
// Failing unlike next one with current slide
.assert.attr('[id="6"]', 'class').to.contain('active', 'Last slide is active')
.done();
},
'End key select the last slide in List mode (with current)': function (test) {
test
.open('http://localhost:7497/tests/#1')
.sendKeys('body', '\uE010') // End
.assert.attr('[id="6"]', 'class').to.contain('active', 'Last slide is active')
.done();
},
'End key select the last slide in Full mode': function (test) {
test
.open('http://localhost:7497/tests/?full#1')
.sendKeys('body', '\uE010') // End
.assert.attr('[id="6"]', 'class').to.contain('active', 'Last slide is active')
.done();
},
// --------------------------------
// Enter // Enter
// --------------------------------
'Enter is opening current slide': function (test) { 'Enter is opening current slide': function (test) {
test test
.open('themes/ribbon/index.html#1') .open('http://localhost:7497/tests/#1')
.sendKeys('body', '\uE007') // Enter .sendKeys('body', '\uE007') // Enter
.assert.attr('body', 'class', 'full', 'Full mode') .assert.attr('body', 'class', 'full', 'Full mode')
.assert.attr('[id="1"]', 'class', 'slide active', 'Slide #1 is active') .assert.attr('[id="1"]', 'class').to.contain('active', 'First slide is active')
.done(); .done();
}, },
// Enter
'Enter is not opening any slide if there’s no current': function (test) { 'Enter is not opening any slide if there’s no current': function (test) {
test test
.open('themes/ribbon/index.html') .open('http://localhost:7497/tests/')
.sendKeys('body', '\uE007') // Enter .sendKeys('body', '\uE007') // Enter
.assert.attr('body', 'class', 'list', 'Mode is list') .assert.attr('body', 'class', 'list', 'Mode is List')
.done(); .done();
} }
// uE004 Tab
// uE008 Shift
// uE00D Space
// uE00E PageUp
// uE00F PageDown
// uE012 Left
// uE013 Up
// uE014 Right
// uE015 Down
}; };
\ No newline at end of file
module.exports = {
'Timer is switching to the next slide when finished': function (test) {
test
.open('http://localhost:7497/tests/?full#3')
.wait(5000)
.assert.attr('[id="4"]', 'class').to.contain('active', 'Next slide is Active')
.done();
},
'Timer becomes Active and switching to the next slide when finished': function (test) {
test
.open('http://localhost:7497/tests/?full#4')
.sendKeys('body', '\uE012') // Left
.wait(5000)
.assert.attr('[id="4"]', 'class').to.contain('active', 'Next slide is Active')
.done();
},
'Left Arrow key is skipping timer while it’s not finished': function (test) {
test
.open('http://localhost:7497/tests/?full#3')
.sendKeys('body', '\uE012') // Left
.assert.attr('[id="2"]', 'class').to.contain('active', 'Previous slide is Active')
.done();
},
'Right Arrow key is skipping timer while it’s not finished': function (test) {
test
.open('http://localhost:7497/tests/?full#3')
.sendKeys('body', '\uE014') // Right
.assert.attr('[id="4"]', 'class').to.contain('active', 'Next slide is Active')
.done();
}
};
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment