1<!doctype html> 2<!-- 3Copyright (c) 2014 The Polymer Project Authors. All rights reserved. 4This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt 5The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt 6The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt 7Code distributed by Google as part of the polymer project is also 8subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt 9--> 10<html> 11<head> 12 <meta charset="UTF-8"> 13 <title>paper-button basic tests</title> 14 <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0"> 15 16 <script src="../../webcomponentsjs/webcomponents.js"></script> 17 <script src="../../web-component-tester/browser.js"></script> 18 <script src="../../polymer-gestures/test/js/fake.js"></script> 19 20 <link href="../paper-button.html" rel="import"> 21 22</head> 23<body> 24 25 <paper-button id="button1">button</paper-button> 26 27 <paper-button id="button2">button</paper-button> 28 29 <paper-button id="disabled" disabled>disabled</paper-button> 30 31 <script> 32 33 var fake = new Fake(); 34 35 var b1 = document.getElementById('button1'); 36 37 test('can set raised imperatively', function(done) { 38 assert.ok(!b1.shadowRoot.querySelector('paper-shadow')); 39 b1.raised = true; 40 flush(function() { 41 setTimeout(function() { 42 var shadow = b1.shadowRoot.querySelector('paper-shadow'); 43 assert.ok(shadow); 44 done(); 45 }, 600); 46 }); 47 }); 48 49 test('can set noink dynamically', function(done) { 50 var button = document.getElementById('button2'); 51 button.lastEvent = {x: 100, y: 100}; 52 button.$.ripple = { 53 downAction: function() { 54 assert.ok(false); 55 }, 56 upAction: function() { 57 assert.ok(false); 58 } 59 }; 60 button.setAttribute('noink', ''); 61 fake.downOnNode(button); 62 fake.upOnNode(button); 63 // would throw if it tries to ripple 64 setTimeout(done, 10); 65 }); 66 67 suite('a11y', function() { 68 69 test('aria role is a button', function() { 70 assert.strictEqual('button', b1.getAttribute('role')); 71 }); 72 73 test('aria-disabled is set', function(done) { 74 var button = document.getElementById('disabled'); 75 assert.ok(button.hasAttribute('aria-disabled')); 76 button.removeAttribute('disabled'); 77 flush(function() { 78 assert.ok(!button.hasAttribute('aria-disabled')); 79 done(); 80 }); 81 }); 82 83 test('space triggers the button', function() { 84 var ev = new CustomEvent('keydown', {detail: {key: 'space'}}); 85 var sawClick = false; 86 function clickListener() { 87 sawClick = true; 88 } 89 b1.addEventListener('click', clickListener); 90 b1.dispatchEvent(ev); 91 assert.ok(sawClick); 92 b1.removeEventListener(clickListener); 93 }); 94 95 test('enter triggers the button', function() { 96 var ev = new CustomEvent('keydown', {detail: {key: 'enter'}}); 97 var sawClick = false; 98 function clickListener() { 99 sawClick = true; 100 } 101 b1.addEventListener('click', clickListener); 102 b1.dispatchEvent(ev); 103 assert.ok(sawClick); 104 b1.removeEventListener(clickListener); 105 }); 106 107 }); 108 109 </script> 110 111</body> 112</html> 113