| Index: polymer_1.0.4/bower_components/iron-overlay-behavior/test/iron-overlay-behavior.html
|
| diff --git a/polymer_1.0.4/bower_components/iron-overlay-behavior/test/iron-overlay-behavior.html b/polymer_1.0.4/bower_components/iron-overlay-behavior/test/iron-overlay-behavior.html
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..4829439f0b3498eaec30cd8fd51fa0e1bab37d21
|
| --- /dev/null
|
| +++ b/polymer_1.0.4/bower_components/iron-overlay-behavior/test/iron-overlay-behavior.html
|
| @@ -0,0 +1,314 @@
|
| +<!doctype html>
|
| +<!--
|
| +@license
|
| +Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
|
| +This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
|
| +The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
|
| +The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
|
| +Code distributed by Google as part of the polymer project is also
|
| +subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
|
| +-->
|
| +<html>
|
| + <head>
|
| +
|
| + <title>iron-overlay-behavior tests</title>
|
| +
|
| + <meta charset="utf-8">
|
| + <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
| + <meta name="viewport" content="width=device-width, minimum-scale=1.0, initial-scale=1, user-scalable=yes">
|
| +
|
| + <script src="../../webcomponentsjs/webcomponents-lite.js"></script>
|
| +
|
| + <script src="../../web-component-tester/browser.js"></script>
|
| + <script src="../../test-fixture/test-fixture-mocha.js"></script>
|
| + <script src="../../iron-test-helpers/test-helpers.js"></script>
|
| +
|
| + <link rel="import" href="../../test-fixture/test-fixture.html">
|
| + <link rel="import" href="test-overlay.html">
|
| +
|
| + </head>
|
| + <body>
|
| +
|
| + <test-fixture id="basic">
|
| + <template>
|
| + <test-overlay>
|
| + Basic Overlay
|
| + </test-overlay>
|
| + </template>
|
| + </test-fixture>
|
| +
|
| + <test-fixture id="opened">
|
| + <template>
|
| + <test-overlay opened>
|
| + Basic Overlay
|
| + </test-overlay>
|
| + </template>
|
| + </test-fixture>
|
| +
|
| + <test-fixture id="autofocus">
|
| + <template>
|
| + <test-overlay>
|
| + Autofocus
|
| + <button autofocus>button</button>
|
| + </test-overlay>
|
| + </template>
|
| + </test-fixture>
|
| +
|
| + <test-fixture id="multiple">
|
| + <template>
|
| + <test-overlay class="overlay-1">
|
| + Overlay 1
|
| + </test-overlay>
|
| + <test-overlay class="overlay-2">
|
| + Overlay 2
|
| + </test-overlay>
|
| + <test-overlay class="overlay-3">
|
| + Overlay 3
|
| + </test-overlay>
|
| + </template>
|
| + </test-fixture>
|
| +
|
| + <test-fixture id="backdrop-multiple">
|
| + <template>
|
| + <test-overlay with-backdrop class="overlay-1">
|
| + Overlay 1 with backdrop
|
| + </test-overlay>
|
| + <test-overlay with-backdrop class="overlay-2">
|
| + Overlay 2 with backdrop
|
| + </test-overlay>
|
| + <test-overlay with-backdrop class="overlay-3">
|
| + Overlay 3 with backdrop
|
| + </test-overlay>
|
| + </template>
|
| + </test-fixture>
|
| +
|
| + <script>
|
| +
|
| + function runAfterOpen(overlay, cb) {
|
| + overlay.addEventListener('iron-overlay-opened', function() {
|
| + cb();
|
| + });
|
| + overlay.open();
|
| + }
|
| +
|
| + suite('basic overlay tests', function() {
|
| + var overlay;
|
| +
|
| + setup(function() {
|
| + overlay = fixture('basic');
|
| + });
|
| +
|
| + test('overlay starts hidden', function() {
|
| + assert.isFalse(overlay.opened, 'overlay starts closed');
|
| + assert.equal(getComputedStyle(overlay).display, 'none', 'overlay starts hidden');
|
| + });
|
| +
|
| + test('overlay open by default', function() {
|
| + overlay = fixture('opened');
|
| + runAfterOpen(overlay, function() {
|
| + assert.isTrue(overlay.opened, 'overlay starts opened');
|
| + assert.notEqual(getComputedStyle(overlay).display, 'none', 'overlay starts showing');
|
| + });
|
| + });
|
| +
|
| + test('overlay open/close events', function(done) {
|
| + var nevents = 0;
|
| +
|
| + overlay.addEventListener('iron-overlay-opened', function() {
|
| + nevents += 1;
|
| + overlay.opened = false;
|
| + });
|
| +
|
| + overlay.addEventListener('iron-overlay-closed', function() {
|
| + nevents += 1;
|
| + assert.equal(nevents, 2, 'opened and closed events fired');
|
| + done();
|
| + });
|
| +
|
| + overlay.opened = true;
|
| + });
|
| +
|
| + test('close an overlay quickly after open', function(done) {
|
| + // first, open the overlay
|
| + overlay.open();
|
| + overlay.async(function() {
|
| + // during the opening transition, close the overlay
|
| + this.close();
|
| + // wait for any exceptions to be thrown until the transition is done
|
| + this.async(function() {
|
| + done();
|
| + }, 300);
|
| + });
|
| + });
|
| +
|
| + test('clicking an overlay does not close it', function(done) {
|
| + runAfterOpen(overlay, function() {
|
| + overlay.addEventListener('iron-overlay-closed', function() {
|
| + assert('iron-overlay-closed should not fire');
|
| + });
|
| + overlay.fire('click');
|
| + setTimeout(function() {
|
| + done();
|
| + }, 10);
|
| + });
|
| + });
|
| +
|
| + test('node with autofocus is focused', function(done) {
|
| + overlay = fixture('autofocus');
|
| + runAfterOpen(overlay, function() {
|
| + assert.equal(Polymer.dom(overlay).querySelector('[autofocus]'), document.activeElement, '<button autofocus> is focused');
|
| + done();
|
| + });
|
| + });
|
| +
|
| + test('cancel an overlay by clicking outside', function(done) {
|
| + runAfterOpen(overlay, function() {
|
| + overlay.addEventListener('iron-overlay-closed', function(event) {
|
| + assert.isTrue(event.detail.canceled, 'overlay is canceled');
|
| + done();
|
| + });
|
| + Polymer.Base.fire.call(document, 'click');
|
| + });
|
| + });
|
| +
|
| + test('cancel an overlay with esc key', function(done) {
|
| + runAfterOpen(overlay, function() {
|
| + overlay.addEventListener('iron-overlay-closed', function(event) {
|
| + assert.isTrue(event.detail.canceled, 'overlay is canceled');
|
| + done();
|
| + });
|
| + fireEvent('keydown', {
|
| + keyCode: 27
|
| + }, document);
|
| + });
|
| + });
|
| +
|
| + test('no-cancel-on-outside-click property', function(done) {
|
| + overlay.noCancelOnOutsideClick = true;
|
| + runAfterOpen(overlay, function() {
|
| + overlay.addEventListener('iron-overlay-closed', function() {
|
| + assert('iron-overlay-closed should not fire');
|
| + });
|
| + Polymer.Base.fire.call(document, 'click');
|
| + setTimeout(function() {
|
| + done();
|
| + }, 10);
|
| + });
|
| + });
|
| +
|
| + test('no-cancel-on-esc-key property', function(done) {
|
| + overlay.noCancelOnEscKey = true;
|
| + runAfterOpen(overlay, function() {
|
| + overlay.addEventListener('iron-overlay-closed', function() {
|
| + assert('iron-overlay-cancel should not fire');
|
| + });
|
| + fireEvent('keydown', {
|
| + keyCode: 27
|
| + }, document);
|
| + setTimeout(function() {
|
| + done();
|
| + }, 10);
|
| + });
|
| + });
|
| +
|
| + });
|
| +
|
| + suite('multiple overlays', function() {
|
| + var overlays;
|
| +
|
| + setup(function() {
|
| + overlays = fixture('multiple');
|
| + });
|
| +
|
| + test('new overlays appear on top', function(done) {
|
| + runAfterOpen(overlays[0], function() {
|
| + runAfterOpen(overlays[1], function() {
|
| + var styleZ = parseInt(window.getComputedStyle(overlays[0]).zIndex, 10);
|
| + var styleZ1 = parseInt(window.getComputedStyle(overlays[1]).zIndex, 10);
|
| + assert.isTrue(styleZ1 > styleZ, 'overlays[1] has higher z-index than overlays[0]');
|
| + done();
|
| + });
|
| + });
|
| + });
|
| + });
|
| +
|
| + suite('overlays with backdrop', function() {
|
| + var overlays;
|
| +
|
| + setup(function() {
|
| + overlays = fixture('backdrop-multiple');
|
| + });
|
| +
|
| + test('backdrop appears behind the overlay', function(done) {
|
| + runAfterOpen(overlays[0], function() {
|
| + assert.isDefined(overlays[0].backdropElement, 'backdrop is defined');
|
| + assert.isDefined(overlays[0].backdropElement.parentNode, 'backdrop is inserted in the DOM');
|
| +
|
| + styleZ = parseInt(window.getComputedStyle(overlays[0]).zIndex, 10);
|
| + backdropStyleZ = parseInt(window.getComputedStyle(overlays[0].backdropElement).zIndex, 10);
|
| + assert.isTrue(styleZ > backdropStyleZ, 'overlay has higher z-index than backdrop');
|
| + done();
|
| + });
|
| + });
|
| +
|
| + test('backdrop is removed when the element is removed from DOM', function(done) {
|
| + runAfterOpen(overlays[0], function() {
|
| + var backdrop = overlays[0].backdropElement;
|
| + Polymer.dom(backdrop.parentNode).removeChild(backdrop);
|
| + Polymer.dom.flush();
|
| + assert.isNull(backdrop.parentNode, 'backdrop is removed from DOM');
|
| + done();
|
| + });
|
| + });
|
| +
|
| + test('backdrop is opened when iron-overlay-open-completed fires', function(done) {
|
| + runAfterOpen(overlays[0], function() {
|
| + assert.isTrue(overlays[0].backdropElement.opened, 'backdrop is opened');
|
| + done();
|
| + });
|
| + });
|
| + });
|
| +
|
| + suite('multiple overlays with backdrop', function() {
|
| + var overlays;
|
| +
|
| + setup(function() {
|
| + overlays = fixture('backdrop-multiple');
|
| + });
|
| +
|
| + test('multiple overlays share the same backdrop', function() {
|
| + assert.isTrue(overlays[0].backdropElement === overlays[1].backdropElement, 'overlays[0] has the same backdrop element as overlays[1]');
|
| + });
|
| +
|
| + test('newest overlay appear on top', function(done) {
|
| + runAfterOpen(overlays[0], function() {
|
| + runAfterOpen(overlays[1], function() {
|
| + var styleZ = parseInt(window.getComputedStyle(overlays[0]).zIndex, 10);
|
| + var style1Z = parseInt(window.getComputedStyle(overlays[1]).zIndex, 10);
|
| + var bgStyleZ = parseInt(window.getComputedStyle(overlays[0].backdropElement).zIndex, 10);
|
| + assert.isTrue(style1Z > styleZ, 'overlays[1] has higher z-index than overlays[0]');
|
| + assert.isTrue(styleZ > bgStyleZ, 'overlays[0] has higher z-index than backdrop');
|
| + done();
|
| + });
|
| + });
|
| + });
|
| +
|
| + });
|
| +
|
| + suite('a11y', function() {
|
| +
|
| + test('overlay has aria-hidden=true when opened', function() {
|
| + var overlay = fixture('basic');
|
| + assert.equal(overlay.getAttribute('aria-hidden'), 'true', 'overlay has aria-hidden="true"');
|
| + overlay.open();
|
| + assert.isFalse(overlay.hasAttribute('aria-hidden'), 'overlay does not have aria-hidden attribute');
|
| + overlay.close();
|
| + assert.equal(overlay.getAttribute('aria-hidden'), 'true', 'overlay has aria-hidden="true"');
|
| + });
|
| +
|
| + })
|
| +
|
| + </script>
|
| +
|
| + </body>
|
| +</html>
|
|
|