aboutsummaryrefslogtreecommitdiffstats
path: root/test_harnesses
diff options
context:
space:
mode:
authorJez Ng2012-09-03 23:19:35 -0400
committerJez Ng2012-09-08 04:30:26 -0400
commit6df16c591219d87058b4c48682d503382e44693f (patch)
tree3ec4044a51c557cd59df6d6a9ff712e6491a9c18 /test_harnesses
parent8437dd96144475343562c9a6aa2f14469bc75a56 (diff)
downloadvimium-6df16c591219d87058b4c48682d503382e44693f.tar.bz2
Set up PhantomJS testing.
Diffstat (limited to 'test_harnesses')
-rw-r--r--test_harnesses/automated/automated.coffee197
-rw-r--r--test_harnesses/automated/automated.html49
2 files changed, 0 insertions, 246 deletions
diff --git a/test_harnesses/automated/automated.coffee b/test_harnesses/automated/automated.coffee
deleted file mode 100644
index b5e5af35..00000000
--- a/test_harnesses/automated/automated.coffee
+++ /dev/null
@@ -1,197 +0,0 @@
-#
-# Dispatching keyboard events via the DOM would require async tests,
-# which tend to be more complicated. Here we create mock events and
-# invoke the handlers directly.
-#
-mockKeyboardEvent = (keyChar) ->
- event = {}
- event.charCode = (if keyCodes[keyChar] isnt undefined then keyCodes[keyChar] else keyChar.charCodeAt(0))
- event.keyIdentifier = "U+00" + event.charCode.toString(16)
- event.keyCode = event.charCode
- event.stopPropagation = ->
- event.preventDefault = ->
- event
-
-#
-# Retrieve the hint markers as an array object.
-#
-getHintMarkers = ->
- Array::slice.call document.getElementsByClassName("vimiumHintMarker"), 0
-
-#
-# Generate tests that are common to both default and filtered
-# link hinting modes.
-#
-createGeneralHintTests = (isFilteredMode) ->
-
- context "Link hints",
-
- setup ->
- testContent = "<a>test</a>" + "<a>tress</a>"
- document.getElementById("test-div").innerHTML = testContent
- stub settings.values, "filterLinkHints", false
-
- tearDown ->
- document.getElementById("test-div").innerHTML = ""
-
- should "create hints when activated, discard them when deactivated", ->
- LinkHints.activateMode()
- assert.isFalse not LinkHints.hintMarkerContainingDiv?
- LinkHints.deactivateMode()
- assert.isTrue not LinkHints.hintMarkerContainingDiv?
-
- should "position items correctly", ->
- assertStartPosition = (element1, element2) ->
- assert.equal element1.getClientRects()[0].left, element2.getClientRects()[0].left
- assert.equal element1.getClientRects()[0].top, element2.getClientRects()[0].top
- stub document.body, "style", "static"
- LinkHints.activateMode()
- hintMarkers = getHintMarkers()
- assertStartPosition document.getElementsByTagName("a")[0], hintMarkers[0]
- assertStartPosition document.getElementsByTagName("a")[1], hintMarkers[1]
- LinkHints.deactivateMode()
- stub document.body.style, "position", "relative"
- LinkHints.activateMode()
- hintMarkers = getHintMarkers()
- assertStartPosition document.getElementsByTagName("a")[0], hintMarkers[0]
- assertStartPosition document.getElementsByTagName("a")[1], hintMarkers[1]
- LinkHints.deactivateMode()
-
-createGeneralHintTests false
-createGeneralHintTests true
-
-context "Alphabetical link hints",
-
- setup ->
- stub settings.values, "filterLinkHints", false
- stub settings.values, "linkHintCharacters", "ab"
-
- # Three hints will trigger double hint chars.
- createLinks 3
- LinkHints.init()
- LinkHints.activateMode()
-
- tearDown ->
- LinkHints.deactivateMode()
- document.getElementById("test-div").innerHTML = ""
-
- should "label the hints correctly", ->
- # TODO(philc): This test verifies the current behavior, but the current behavior is incorrect.
- # The output here should be something like aa, ab, b.
- hintMarkers = getHintMarkers()
- expectedHints = ["aa", "ba", "ab"]
- for hint, i in expectedHints
- assert.equal hint, hintMarkers[i].hintString
-
- should "narrow the hints", ->
- hintMarkers = getHintMarkers()
- LinkHints.onKeyDownInMode hintMarkers, mockKeyboardEvent("A")
- assert.equal "none", hintMarkers[1].style.display
- assert.equal "", hintMarkers[0].style.display
-
-context "Filtered link hints",
-
- setup ->
- stub settings.values, "filterLinkHints", true
-
- context "Text hints",
-
- setup ->
- testContent = "<a>test</a>" + "<a>tress</a>" + "<a>trait</a>" + "<a>track<img alt='alt text'/></a>"
- document.getElementById("test-div").innerHTML = testContent
- LinkHints.init()
- LinkHints.activateMode()
-
- tearDown ->
- document.getElementById("test-div").innerHTML = ""
- LinkHints.deactivateMode()
-
- should "label the hints", ->
- hintMarkers = getHintMarkers()
- for i in [0...4]
- assert.equal (i + 1).toString(), hintMarkers[i].textContent.toLowerCase()
-
- should "narrow the hints", ->
- hintMarkers = getHintMarkers()
- LinkHints.onKeyDownInMode hintMarkers, mockKeyboardEvent("T")
- LinkHints.onKeyDownInMode hintMarkers, mockKeyboardEvent("R")
- assert.equal "none", hintMarkers[0].style.display
- assert.equal "1", hintMarkers[1].hintString
- assert.equal "", hintMarkers[1].style.display
- LinkHints.onKeyDownInMode hintMarkers, mockKeyboardEvent("A")
- assert.equal "2", hintMarkers[3].hintString
-
- context "Image hints",
-
- setup ->
- testContent = "<a><img alt='alt text'/></a>" + "<a><img alt='alt text' title='some title'/></a>" + "<a><img title='some title'/></a>" + "<a><img src='' width='320px' height='100px'/></a>"
- document.getElementById("test-div").innerHTML = testContent
- LinkHints.activateMode()
-
- tearDown ->
- document.getElementById("test-div").innerHTML = ""
- LinkHints.deactivateMode()
-
- should "label the images", ->
- hintMarkers = getHintMarkers()
- assert.equal "1: alt text", hintMarkers[0].textContent.toLowerCase()
- assert.equal "2: alt text", hintMarkers[1].textContent.toLowerCase()
- assert.equal "3: some title", hintMarkers[2].textContent.toLowerCase()
- assert.equal "4", hintMarkers[3].textContent.toLowerCase()
-
- context "Input hints",
-
- setup ->
- testContent = "<input type='text' value='some value'/>" + "<input type='password' value='some value'/>" + "<textarea>some text</textarea>" + "<label for='test-input'/>a label</label><input type='text' id='test-input' value='some value'/>" + "<label for='test-input-2'/>a label: </label><input type='text' id='test-input-2' value='some value'/>"
- document.getElementById("test-div").innerHTML = testContent
- LinkHints.activateMode()
-
- tearDown ->
- document.getElementById("test-div").innerHTML = ""
- LinkHints.deactivateMode()
-
- should "label the input elements", ->
- hintMarkers = getHintMarkers()
- assert.equal "1", hintMarkers[0].textContent.toLowerCase()
- assert.equal "2", hintMarkers[1].textContent.toLowerCase()
- assert.equal "3", hintMarkers[2].textContent.toLowerCase()
- assert.equal "4: a label", hintMarkers[3].textContent.toLowerCase()
- assert.equal "5: a label", hintMarkers[4].textContent.toLowerCase()
-
-context "Input focus",
-
- setup ->
- testContent = "<input type='text' id='first'/>" + "<input style='display:none;' id='second'/>" + "<input type='password' id='third' value='some value'/>"
- document.getElementById("test-div").innerHTML = testContent
-
- tearDown ->
- document.getElementById("test-div").innerHTML = ""
-
- should "focus the right element", ->
- focusInput 1
- assert.equal "first", document.activeElement.id
- # deactivate the tabbing mode and its overlays
- handlerStack[handlerStack.length - 1].keydown mockKeyboardEvent("A")
-
- focusInput 100
- assert.equal "third", document.activeElement.id
- handlerStack[handlerStack.length - 1].keydown mockKeyboardEvent("A")
-
-Tests.outputMethod = (args...) ->
- newOutput = args.join "\n"
- # escape html
- newOutput = newOutput.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;")
- # highlight the source of the error
- newOutput = newOutput.replace(/\/([^:/]+):([0-9]+):([0-9]+)/, "/<span class='errorPosition'>$1:$2</span>:$3")
- document.getElementById("output-div").innerHTML += "<div class='output-section'>" + newOutput + "</div>"
- console.log.apply console, args
-
-# ensure the extension has time to load before commencing the tests
-document.addEventListener "DOMContentLoaded", ->
- setTimeout Tests.run, 200
-
-createLinks = (n) ->
- for i in [0...n] by 1
- link = document.createElement("a")
- link.textContent = "test"
- document.getElementById("test-div").appendChild link
diff --git a/test_harnesses/automated/automated.html b/test_harnesses/automated/automated.html
deleted file mode 100644
index a0c8c7de..00000000
--- a/test_harnesses/automated/automated.html
+++ /dev/null
@@ -1,49 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
- "http://www.w3.org/TR/html4/strict.dtd">
-<html>
- <head>
- <style type="text/css">
- body {
- font-family: "Helvetica Neue", "Helvetica", "Arial", sans-serif;
- width: 800px;
- margin: 0px auto;
- }
- #output-div {
- white-space: pre-wrap;
- background-color: #eee;
- font-family: monospace;
- margin: 0 0 50px 0;
- border-style: dashed;
- border-width: 1px 1px 0 1px;
- border-color: #999;
- }
- .errorPosition {
- color: #f33;
- font-weight: bold;
- }
- .output-section {
- padding: 10px 15px 10px 15px;
- border-bottom: dashed 1px #999;
- }
- </style>
- <link rel="stylesheet" type="text/css" href="../../vimium.css" />
- <script type="text/javascript" src="../../lib/utils.js"></script>
- <script type="text/javascript" src="../../lib/keyboard_utils.js"></script>
- <script type="text/javascript" src="../../lib/dom_utils.js"></script>
- <script type="text/javascript" src="../../lib/clipboard.js"></script>
- <script type="text/javascript" src="../../content_scripts/link_hints.js"></script>
- <script type="text/javascript" src="../../content_scripts/vomnibar.js"></script>
- <script type="text/javascript" src="../../content_scripts/vimium_frontend.js"></script>
- <script type="text/javascript" src="../../tests/shoulda.js/shoulda.js"></script>
- <script type="text/javascript" src="automated.js"></script>
- </head>
- <body>
- <!-- should always be the first element on the page -->
- <div id="test-div"></div>
-
- <h1>Vimium Tests</h1>
-
- <div id="output-div"></div>
-
- </body>
-</html>