Skip some keyboard tests on IE and Edge

IE and Edge has some broken behaviour for keyboard events that
prevent the standard tests from running properly.
This commit is contained in:
Pierre Ossman 2017-05-04 13:26:39 +02:00
parent 38170d2442
commit 099eb856cf
2 changed files with 25 additions and 0 deletions

View File

@ -4,6 +4,13 @@ var expect = chai.expect;
import keysyms from '../core/input/keysymdef.js'; import keysyms from '../core/input/keysymdef.js';
import * as KeyboardUtil from "../core/input/util.js"; import * as KeyboardUtil from "../core/input/util.js";
function isIE() {
return navigator && !!(/trident/i).exec(navigator.userAgent);
}
function isEdge() {
return navigator && !!(/edge/i).exec(navigator.userAgent);
}
describe('Helpers', function() { describe('Helpers', function() {
"use strict"; "use strict";
@ -100,6 +107,7 @@ describe('Helpers', function() {
describe('getKey', function() { describe('getKey', function() {
it('should prefer key', function() { it('should prefer key', function() {
if (isIE() || isEdge()) this.skip();
expect(KeyboardUtil.getKey({key: 'a', charCode: 'Š'.charCodeAt(), keyCode: 0x42, which: 0x43})).to.be.equal('a'); expect(KeyboardUtil.getKey({key: 'a', charCode: 'Š'.charCodeAt(), keyCode: 0x42, which: 0x43})).to.be.equal('a');
}); });
it('should map legacy values', function() { it('should map legacy values', function() {
@ -201,6 +209,7 @@ describe('Helpers', function() {
describe('Numpad', function() { describe('Numpad', function() {
it('should handle Numpad numbers', function() { it('should handle Numpad numbers', function() {
if (isIE() || isEdge()) this.skip();
expect(KeyboardUtil.getKeysym({code: 'Digit5', key: '5', location: 0})).to.be.equal(0x0035); expect(KeyboardUtil.getKeysym({code: 'Digit5', key: '5', location: 0})).to.be.equal(0x0035);
expect(KeyboardUtil.getKeysym({code: 'Numpad5', key: '5', location: 3})).to.be.equal(0xFFB5); expect(KeyboardUtil.getKeysym({code: 'Numpad5', key: '5', location: 3})).to.be.equal(0xFFB5);
}); });
@ -211,6 +220,7 @@ describe('Helpers', function() {
expect(KeyboardUtil.getKeysym({code: 'NumpadDecimal', key: 'Delete', location: 3})).to.be.equal(0xFF9F); expect(KeyboardUtil.getKeysym({code: 'NumpadDecimal', key: 'Delete', location: 3})).to.be.equal(0xFF9F);
}); });
it('should handle Numpad Decimal key', function() { it('should handle Numpad Decimal key', function() {
if (isIE() || isEdge()) this.skip();
expect(KeyboardUtil.getKeysym({code: 'NumpadDecimal', key: '.', location: 3})).to.be.equal(0xFFAE); expect(KeyboardUtil.getKeysym({code: 'NumpadDecimal', key: '.', location: 3})).to.be.equal(0xFFAE);
expect(KeyboardUtil.getKeysym({code: 'NumpadDecimal', key: ',', location: 3})).to.be.equal(0xFFAC); expect(KeyboardUtil.getKeysym({code: 'NumpadDecimal', key: ',', location: 3})).to.be.equal(0xFFAC);
}); });

View File

@ -5,6 +5,13 @@ import { Keyboard } from '../core/input/devices.js';
import keysyms from '../core/input/keysymdef.js'; import keysyms from '../core/input/keysymdef.js';
import * as KeyboardUtil from '../core/input/util.js'; import * as KeyboardUtil from '../core/input/util.js';
function isIE() {
return navigator && !!(/trident/i).exec(navigator.userAgent);
}
function isEdge() {
return navigator && !!(/edge/i).exec(navigator.userAgent);
}
/* jshint newcap: false, expr: true */ /* jshint newcap: false, expr: true */
describe('Key Event Handling', function() { describe('Key Event Handling', function() {
"use strict"; "use strict";
@ -23,6 +30,7 @@ describe('Key Event Handling', function() {
describe('Decode Keyboard Events', function() { describe('Decode Keyboard Events', function() {
it('should decode keydown events', function(done) { it('should decode keydown events', function(done) {
if (isIE() || isEdge()) this.skip();
var kbd = new Keyboard({ var kbd = new Keyboard({
onKeyEvent: function(keysym, code, down) { onKeyEvent: function(keysym, code, down) {
expect(keysym).to.be.equal(0x61); expect(keysym).to.be.equal(0x61);
@ -33,6 +41,7 @@ describe('Key Event Handling', function() {
kbd._handleKeyDown(keyevent('keydown', {code: 'KeyA', key: 'a'})); kbd._handleKeyDown(keyevent('keydown', {code: 'KeyA', key: 'a'}));
}); });
it('should decode keyup events', function(done) { it('should decode keyup events', function(done) {
if (isIE() || isEdge()) this.skip();
var calls = 0; var calls = 0;
var kbd = new Keyboard({ var kbd = new Keyboard({
onKeyEvent: function(keysym, code, down) { onKeyEvent: function(keysym, code, down) {
@ -86,6 +95,9 @@ describe('Key Event Handling', function() {
}); });
describe('suppress the right events at the right time', function() { describe('suppress the right events at the right time', function() {
beforeEach(function () {
if (isIE() || isEdge()) this.skip();
});
it('should suppress anything with a valid key', function() { it('should suppress anything with a valid key', function() {
var kbd = new Keyboard({}); var kbd = new Keyboard({});
var evt = keyevent('keydown', {code: 'KeyA', key: 'a'}); var evt = keyevent('keydown', {code: 'KeyA', key: 'a'});
@ -113,6 +125,9 @@ describe('Key Event Handling', function() {
}); });
describe('Track Key State', function() { describe('Track Key State', function() {
beforeEach(function () {
if (isIE() || isEdge()) this.skip();
});
it('should send release using the same keysym as the press', function(done) { it('should send release using the same keysym as the press', function(done) {
var kbd = new Keyboard({ var kbd = new Keyboard({
onKeyEvent: function(keysym, code, down) { onKeyEvent: function(keysym, code, down) {