Skip to content

Commit

Permalink
skip link test in phantomjs
Browse files Browse the repository at this point in the history
  • Loading branch information
bantic committed Jul 13, 2015
1 parent 9a10d7a commit 7557d43
Show file tree
Hide file tree
Showing 4 changed files with 30 additions and 29 deletions.
3 changes: 1 addition & 2 deletions tests/acceptance/basic-editor-test.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
/* global QUnit */

import { Editor } from 'content-kit-editor';
import Helpers from '../test-helpers';

Expand All @@ -15,6 +13,7 @@ module('Acceptance: basic editor', {
fixture.appendChild(editorElement);
},
afterEach() {
editor.destroy();
}
});

Expand Down
10 changes: 10 additions & 0 deletions tests/acceptance/editor-commands-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ test('when text is highlighted, shows toolbar', (assert) => {
assert.hasElement('.ck-toolbar-btn', 'displays toolbar buttons');
let boldBtnSelector = '.ck-toolbar-btn[title="bold"]';
assert.hasElement(boldBtnSelector, 'has bold button');

done();
}, 10);
});
Expand Down Expand Up @@ -102,6 +103,15 @@ test('highlight text, click "link" button shows input for URL, makes link', (ass
let done = assert.async();

setTimeout(() => {
// FIXME PhantomJS doesn't create keyboard events properly (they have no keyCode or which)
// see https://bugs.webkit.org/show_bug.cgi?id=36423
let skippable = navigator.userAgent.indexOf('PhantomJS') !== -1;
if (skippable) {
assert.ok(true, 'Skipping test in phantomjs');
done();
return;
}

clickToolbarButton('link', assert);
let input = assert.hasElement('.ck-toolbar-prompt input');
let url = 'http://google.com';
Expand Down
45 changes: 19 additions & 26 deletions tests/helpers/dom.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
const TEXT_NODE = 3;
const ENTER_KEY_CODE = 13;

function moveCursorTo(element, offset) {
let range = document.createRange();
Expand Down Expand Up @@ -60,42 +61,34 @@ function triggerEvent(node, eventType) {
node.dispatchEvent(clickEvent);
}

// see https://gist.github.com/ejoubaud/7d7c57cda1c10a4fae8c
function createKeyEvent(eventType, key) {
var oEvent = document.createEvent('KeyboardEvent');

// Chromium Hack
Object.defineProperty(oEvent, 'keyCode', {
get : function() {
return this.keyCodeVal;
}
});
Object.defineProperty(oEvent, 'which', {
get : function() {
return this.keyCodeVal;
}
});

function createKeyEvent(eventType, keyCode=ENTER_KEY_CODE) {
let oEvent = document.createEvent('KeyboardEvent');
if (oEvent.initKeyboardEvent) {
oEvent.initKeyboardEvent(eventType, true, true, document.defaultView, key, key, "", "", false, "");
} else {
oEvent.initKeyEvent(eventType, true, true, document.defaultView, false, false, false, false, key, 0);
oEvent.initKeyboardEvent(eventType, true, true, window, 0, 0, 0, 0, 0, keyCode);
} else if (oEvent.initKeyEvent) {
oEvent.initKeyEvent(eventType, true, true, window, 0, 0, 0, 0, 0, keyCode);
}

oEvent.keyCodeVal = key;
// Hack for Chrome to force keyCode/which value
try {
Object.defineProperty(oEvent, 'keyCode', {get: function() { return keyCode; }});
Object.defineProperty(oEvent, 'which', {get: function() { return keyCode; }});
} catch(e) {
// FIXME
// PhantomJS/webkit will throw an error "ERROR: Attempting to change access mechanism for an unconfigurable property"
// see https://bugs.webkit.org/show_bug.cgi?id=36423
}

if (oEvent.keyCode !== key) {
throw new Error("keyCode mismatch " + oEvent.keyCode + "(" + oEvent.which + ")");
if (oEvent.keyCode !== keyCode || oEvent.which !== keyCode) {
throw new Error(`Failed to create key event with keyCode ${keyCode}. \`keyCode\`: ${oEvent.keyCode}, \`which\`: ${oEvent.which}`);
}

return oEvent;
}

const ENTER_KEY_CODE = 13;
function triggerKeyEvent(node, eventType, keyCode=ENTER_KEY_CODE) {
let event = createKeyEvent('keyup', keyCode);

node.dispatchEvent(event);
let oEvent = createKeyEvent(eventType, keyCode);
node.dispatchEvent(oEvent);
}

export default {
Expand Down
1 change: 0 additions & 1 deletion tests/unit/editor/editor-destroy-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@ test('removes toolbar from DOM', (assert) => {
assert.hasElement('.ck-toolbar', 'toolbar is shown');
editor.destroy();
assert.hasNoElement('.ck-toolbar', 'toolbar is removed');

done();
});
});

0 comments on commit 7557d43

Please sign in to comment.