diff options
| author | Jez Ng | 2012-09-03 23:19:35 -0400 |
|---|---|---|
| committer | Jez Ng | 2012-09-08 04:30:26 -0400 |
| commit | 6df16c591219d87058b4c48682d503382e44693f (patch) | |
| tree | 3ec4044a51c557cd59df6d6a9ff712e6491a9c18 /test_harnesses | |
| parent | 8437dd96144475343562c9a6aa2f14469bc75a56 (diff) | |
| download | vimium-6df16c591219d87058b4c48682d503382e44693f.tar.bz2 | |
Set up PhantomJS testing.
Diffstat (limited to 'test_harnesses')
| -rw-r--r-- | test_harnesses/automated/automated.coffee | 197 | ||||
| -rw-r--r-- | test_harnesses/automated/automated.html | 49 |
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, "&").replace(/</g, "<").replace(/>/g, ">") - # 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> |
