-
Notifications
You must be signed in to change notification settings - Fork 36
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Added SwapView / ViewIndicator unit and functional tests.
- Loading branch information
edurocher
committed
Dec 3, 2014
1 parent
2ccd8ea
commit 48fb578
Showing
6 changed files
with
512 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
<!DOCTYPE html> | ||
<html> | ||
<head> | ||
<meta http-equiv="Content-type" content="text/html; charset=utf-8"/> | ||
<meta name="viewport" | ||
content="width=device-width,initial-scale=1,maximum-scale=1,minimum-scale=1,user-scalable=no"/> | ||
<meta name="apple-mobile-web-app-capable" content="yes"/> | ||
<title>SwapView</title> | ||
|
||
<!-- For testing purposes. Real applications should load the AMD loader directly --> | ||
<script type="text/javascript" src="../boilerplate.js"></script> | ||
|
||
</head> | ||
<body style="background: #eeeeee"> | ||
<h1>d-SwapView functional test</h1> | ||
<button id="b1">Start</button> | ||
<d-swap-view id="sv" style="width:400px; height:200px"> | ||
<div style="background-color: darkblue">Child 1</div> | ||
<div style="background-color: white">Child 2</div> | ||
<div style="background-color: crimson">Child 3</div> | ||
</d-swap-view> | ||
<d-view-indicator id="vi" viewstack="sv" style="width: 400px"></d-view-indicator> | ||
<button id="b2">End</button> | ||
</body> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,332 @@ | ||
define([ | ||
"intern", "intern!object", "intern/dojo/node!leadfoot/helpers/pollUntil", "intern/chai!assert", | ||
"intern/dojo/node!leadfoot/keys", "require" | ||
], function (intern, registerSuite, pollUntil, assert, keys, require) { | ||
|
||
function loadFile(r, url) { | ||
return r.setExecuteAsyncTimeout(intern.config.WAIT_TIMEOUT).get(require.toUrl(url)).executeAsync(function (d) { | ||
require(["delite/register", "deliteful/SwapView", "deliteful/ViewIndicator", | ||
"requirejs-domready/domReady!"], function (register) { | ||
register.parse(); | ||
d(); | ||
}); | ||
}); | ||
} | ||
|
||
function getTransformX(v) { | ||
var m = v.match(/matrix\(.*,.*,.*,.*,\s*(.*)\s*,.*\)/); | ||
if (m && m.length > 0) { | ||
return m[1]; | ||
} else { | ||
m = v.match(/matrix3d\(.*,.*,.*,.*,.*,.*,.*,.*,.*,.*,.*,.*,\s*(.*)\s*,.*,.*,.*\)/); | ||
if (m && m.length > 0) { | ||
return m[1]; | ||
} else { | ||
return "unknown transform"; | ||
} | ||
} | ||
} | ||
|
||
registerSuite({ | ||
name: "SwapView - functional", | ||
|
||
"SwapView load": function () { | ||
this.timeout = intern.config.TEST_TIMEOUT; | ||
var remote = this.remote; | ||
return loadFile(remote, "./SwapView.html").findById("sv").then(function () { | ||
pollUntil("return document.getElementById('sv').className == 'd-swap-view d-view-stack'", [], 2000, | ||
intern.config.POLL_INTERVAL); | ||
}) | ||
.execute("return document.getElementById('sv').children.length;") | ||
.then(function (v) { | ||
assert.equal(v, 3, "Wrong number of children in SwapView"); | ||
}) | ||
; | ||
}, | ||
|
||
"ViewIndicator initialization": function () { | ||
var remote = this.remote; | ||
return remote | ||
.execute("return document.getElementById('vi').className;") | ||
.then(function (v) { | ||
assert.equal(v, "d-view-indicator", "Wrong class for ViewIndicator"); | ||
}) | ||
.execute("return document.getElementById('vi').children.length;") | ||
.then(function (v) { | ||
assert.equal(v, 3, "Wrong number of children in ViewIndicator"); | ||
}) | ||
.execute("return document.getElementById('vi').children[0].className;") | ||
.then(function (v) { | ||
assert.include(v, "-d-view-indicator-dot", "Missing class for vi child 0"); | ||
assert.include(v, "-d-view-indicator-dot-selected", "Missing class for vi child 0"); | ||
}) | ||
.execute("return document.getElementById('vi').children[1].className;") | ||
.then(function (v) { | ||
assert.include(v, "-d-view-indicator-dot", "Missing class for vi child 1"); | ||
assert.notInclude(v, "-d-view-indicator-dot-selected", "Extra class for vi child 1"); | ||
}) | ||
.execute("return document.getElementById('vi').children[2].className;") | ||
.then(function (v) { | ||
assert.include(v, "-d-view-indicator-dot", "Missing class for vi child 2"); | ||
assert.notInclude(v, "-d-view-indicator-dot-selected", "Extra class for vi child 2"); | ||
}) | ||
; | ||
}, | ||
|
||
"SwapView swipe gesture (right->left)": function () { | ||
var remote = this.remote; | ||
if (/safari|iphone|selendroid/.test(remote.environmentType.browserName)) { | ||
// SafariDriver doesn't support moveTo, see https://code.google.com/p/selenium/issues/detail?id=4136 | ||
console.log("Skipping test: SwapView swipe gesture (right->left) as moveTo not supported on Safari"); | ||
return remote.end(); | ||
} else { | ||
return remote | ||
.findById("sv") | ||
.then(function (element) { | ||
return remote.moveMouseTo(element, 200, 100); | ||
}) | ||
.end() | ||
.pressMouseButton() | ||
.sleep(50) | ||
.findById("sv") | ||
.then(function (element) { | ||
return remote.moveMouseTo(element, 195, 100); | ||
}) | ||
.end() | ||
.sleep(50) | ||
.execute("return document.getElementById('sv').className;") | ||
.then(function (v) { | ||
assert.notInclude(v, " -d-swap-view-drag", "Swipe started before drag threshold"); | ||
}) | ||
.findById("sv") | ||
.then(function (element) { | ||
return remote.moveMouseTo(element, 189, 100); | ||
}) | ||
.end() | ||
.sleep(50) | ||
.execute("return document.getElementById('sv').className;") | ||
.then(function (v) { | ||
assert.include(v, " -d-swap-view-drag", "Swipe not started after drag threshold"); | ||
}) | ||
.findById("sv") | ||
.then(function (element) { | ||
return remote.moveMouseTo(element, 100, 100); | ||
}).end() | ||
.sleep(50) | ||
.execute("return document.getElementById('sv').className;") | ||
.then(function (v) { | ||
assert.include(v, " -d-swap-view-drag", "Missing -d-swap-view-drag class during swipe"); | ||
}) | ||
.execute("var s = window.getComputedStyle(document.getElementById('sv').children[0]);" + | ||
"return s.webkitTransform || s.transform;") | ||
.then(function (v) { | ||
assert.equal(getTransformX(v), "-100", "Wrong transform during swipe"); | ||
}) | ||
.execute("var s = window.getComputedStyle(document.getElementById('sv').children[1]);" + | ||
"return s.webkitTransform || s.transform;") | ||
.then(function (v) { | ||
assert.equal(getTransformX(v), "300", "Wrong transform during swipe"); | ||
}) | ||
.releaseMouseButton() | ||
.sleep(500) | ||
.execute("return document.getElementById('sv').className;").then(function (v) { | ||
assert.notInclude(v, " -d-swap-view-drag", "-d-swap-view-drag class left after swipe"); | ||
}) | ||
.execute("return document.getElementById('sv').children[0].style.visibility;") | ||
.then(function (v) { | ||
assert.equal(v, "visible", "child 0 should still be visible after swipe 100"); | ||
}) | ||
.findById("sv") | ||
.then(function (element) { | ||
return remote.moveMouseTo(element, 310, 100); | ||
}) | ||
.end() | ||
.pressMouseButton() | ||
.sleep(50) | ||
.findById("sv") | ||
.then(function (element) { | ||
return remote.moveMouseTo(element, 100, 100); | ||
}) | ||
.end() | ||
.sleep(50) | ||
.execute("var s = window.getComputedStyle(document.getElementById('sv').children[0]);" + | ||
"return s.webkitTransform || s.transform;") | ||
.then(function (v) { | ||
assert.equal(getTransformX(v), "-208", "Wrong transform during swipe"); | ||
}) | ||
.execute("var s = window.getComputedStyle(document.getElementById('sv').children[1]);" + | ||
"return s.webkitTransform || s.transform;") | ||
.then(function (v) { | ||
assert.equal(getTransformX(v), "188", "Wrong transform during swipe"); | ||
}) | ||
.releaseMouseButton() | ||
.sleep(500) | ||
.execute("return document.getElementById('sv').children[0].style.visibility;") | ||
.then(function (v) { | ||
assert.equal(v, "hidden", "child 0 should be hidden after swipe > 200"); | ||
}) | ||
.execute("return document.getElementById('sv').children[1].style.visibility;") | ||
.then(function (v) { | ||
assert.equal(v, "visible", "child 1 should be visible after swipe > 200"); | ||
}) | ||
; | ||
} | ||
}, | ||
|
||
"ViewIndicator update": function () { | ||
var remote = this.remote; | ||
return remote | ||
.execute("return document.getElementById('vi').children[0].className;") | ||
.then(function (v) { | ||
assert.include(v, "-d-view-indicator-dot", "Missing class for vi child 0"); | ||
assert.notInclude(v, "-d-view-indicator-dot-selected", "Extra class for vi child 0"); | ||
}) | ||
.execute("return document.getElementById('vi').children[1].className;") | ||
.then(function (v) { | ||
assert.include(v, "-d-view-indicator-dot", "Missing class for vi child 1"); | ||
assert.include(v, "-d-view-indicator-dot-selected", "Extra class for vi child 1"); | ||
}) | ||
.execute("return document.getElementById('vi').children[2].className;") | ||
.then(function (v) { | ||
assert.include(v, "-d-view-indicator-dot", "Missing class for vi child 2"); | ||
assert.notInclude(v, "-d-view-indicator-dot-selected", "Extra class for vi child 2"); | ||
}) | ||
; | ||
}, | ||
|
||
"SwapView swipe gesture (left->right)": function () { | ||
var remote = this.remote; | ||
if (/safari|iphone|selendroid/.test(remote.environmentType.browserName)) { | ||
// SafariDriver doesn't support moveTo, see https://code.google.com/p/selenium/issues/detail?id=4136 | ||
console.log("Skipping test: SwapView swipe gesture (left->right) as moveTo not supported on Safari"); | ||
return remote.end(); | ||
} else { | ||
return remote | ||
.findById("sv") | ||
.then(function (element) { | ||
return remote.moveMouseTo(element, 200, 100); | ||
}) | ||
.end() | ||
.pressMouseButton() | ||
.sleep(50) | ||
.findById("sv") | ||
.then(function (element) { | ||
return remote.moveMouseTo(element, 205, 100); | ||
}) | ||
.end() | ||
.sleep(50) | ||
.execute("return document.getElementById('sv').className;") | ||
.then(function (v) { | ||
assert.notInclude(v, " -d-swap-view-drag", "Swipe started before drag threshold"); | ||
}) | ||
.findById("sv") | ||
.then(function (element) { | ||
return remote.moveMouseTo(element, 211, 100); | ||
}) | ||
.end() | ||
.sleep(50) | ||
.execute("return document.getElementById('sv').className;") | ||
.then(function (v) { | ||
assert.include(v, " -d-swap-view-drag", "Swipe not started after drag threshold"); | ||
}) | ||
.findById("sv") | ||
.then(function (element) { | ||
return remote.moveMouseTo(element, 300, 100); | ||
}).end() | ||
.sleep(50) | ||
.execute("return document.getElementById('sv').className;") | ||
.then(function (v) { | ||
assert.include(v, " -d-swap-view-drag", "Missing -d-swap-view-drag class during swipe"); | ||
}) | ||
.execute("var s = window.getComputedStyle(document.getElementById('sv').children[0]);" + | ||
"return s.webkitTransform || s.transform;") | ||
.then(function (v) { | ||
assert.equal(getTransformX(v), "-300", "Wrong transform during swipe"); | ||
}) | ||
.execute("var s = window.getComputedStyle(document.getElementById('sv').children[1]);" + | ||
"return s.webkitTransform || s.transform;") | ||
.then(function (v) { | ||
assert.equal(getTransformX(v), "100", "Wrong transform during swipe"); | ||
}) | ||
.releaseMouseButton() | ||
.sleep(500) | ||
.execute("return document.getElementById('sv').className;").then(function (v) { | ||
assert.notInclude(v, " -d-swap-view-drag", "-d-swap-view-drag class left after swipe"); | ||
}) | ||
.execute("return document.getElementById('sv').children[1].style.visibility;") | ||
.then(function (v) { | ||
assert.equal(v, "visible", "child 1 should still be visible after swipe 100"); | ||
}) | ||
.findById("sv") | ||
.then(function (element) { | ||
return remote.moveMouseTo(element, 90, 100); | ||
}) | ||
.end() | ||
.pressMouseButton() | ||
.sleep(50) | ||
.findById("sv") | ||
.then(function (element) { | ||
return remote.moveMouseTo(element, 300, 100); | ||
}) | ||
.end() | ||
.sleep(50) | ||
.execute("var s = window.getComputedStyle(document.getElementById('sv').children[0]);" + | ||
"return s.webkitTransform || s.transform;") | ||
.then(function (v) { | ||
assert.equal(getTransformX(v), "-188", "Wrong transform during swipe"); | ||
}) | ||
.execute("var s = window.getComputedStyle(document.getElementById('sv').children[1]);" + | ||
"return s.webkitTransform || s.transform;") | ||
.then(function (v) { | ||
assert.equal(getTransformX(v), "208", "Wrong transform during swipe"); | ||
}) | ||
.releaseMouseButton() | ||
.sleep(500) | ||
.execute("return document.getElementById('sv').children[0].style.visibility;") | ||
.then(function (v) { | ||
assert.equal(v, "visible", "child 0 should be visible after swipe > 200"); | ||
}) | ||
.execute("return document.getElementById('sv').children[1].style.visibility;") | ||
.then(function (v) { | ||
assert.equal(v, "hidden", "child 1 should be hidden after swipe > 200"); | ||
}) | ||
; | ||
} | ||
}, | ||
|
||
"ViewIndicator click": function () { | ||
var remote = this.remote; | ||
if (/safari|iphone|selendroid/.test(remote.environmentType.browserName)) { | ||
// SafariDriver doesn't support moveTo, see https://code.google.com/p/selenium/issues/detail?id=4136 | ||
console.log("Skipping test: ViewIndicator click as moveTo not supported on Safari"); | ||
return remote.end(); | ||
} | ||
return remote | ||
.findById("vi") | ||
.then(function (element) { | ||
return remote.moveMouseTo(element, 220, 5); | ||
}) | ||
.end() | ||
.pressMouseButton() | ||
.sleep(50) | ||
.releaseMouseButton() | ||
.sleep(500) | ||
.execute("return document.getElementById('vi').children[0].className;") | ||
.then(function (v) { | ||
assert.include(v, "-d-view-indicator-dot", "Missing class for vi child 0"); | ||
assert.notInclude(v, "-d-view-indicator-dot-selected", "Extra class for vi child 0"); | ||
}) | ||
.execute("return document.getElementById('vi').children[1].className;") | ||
.then(function (v) { | ||
assert.include(v, "-d-view-indicator-dot", "Missing class for vi child 1"); | ||
assert.notInclude(v, "-d-view-indicator-dot-selected", "Extra class for vi child 1"); | ||
}) | ||
.execute("return document.getElementById('vi').children[2].className;") | ||
.then(function (v) { | ||
assert.include(v, "-d-view-indicator-dot", "Missing class for vi child 2"); | ||
assert.include(v, "-d-view-indicator-dot-selected", "Missing class for vi child 2"); | ||
}) | ||
; | ||
} | ||
}); | ||
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -10,5 +10,6 @@ define([ | |
"./Checkbox", | ||
"./Switch", | ||
"./Button", | ||
"./Combobox" | ||
"./Combobox", | ||
"./SwapView" | ||
]); |
Oops, something went wrong.