Roll src/third_party/WebKit d9c6159:8139f33 (svn 201974:201975)
[chromium-blink-merge.git] / chrome / test / data / webui / polymer_browser_test_base.js
blobb768ef76f555a034a033641b08b6ae2c3845b7de
1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 /**
6  * @fileoverview Framework for running JavaScript tests of Polymer elements.
7  */
9 /**
10  * Test fixture for Polymer element testing.
11  * @constructor
12  * @extends testing.Test
13  */
14 function PolymerTest() {
17 PolymerTest.prototype = {
18   __proto__: testing.Test.prototype,
20   /**
21    * Navigate to a WebUI to satisfy BrowserTest conditions. Override to load a
22    * more useful WebUI.
23    * @override
24    */
25   browsePreload: 'chrome://chrome-urls/',
27   /**
28    * The mocha adapter assumes all tests are async.
29    * @override
30    * @final
31    */
32   isAsync: true,
34   /**
35    * Files that need not be compiled. Should be overridden to use correct
36    * relative paths with PolymerTest.getLibraries.
37    * @override
38    */
39   extraLibraries: [
40     'ui/webui/resources/js/cr.js',
41     'third_party/mocha/mocha.js',
42     'chrome/test/data/webui/mocha_adapter.js',
43   ],
45   /** @override */
46   setUp: function() {
47     testing.Test.prototype.setUp.call(this);
49     // Import Polymer and iron-test-helpers before running tests.
50     suiteSetup(function() {
51       return Promise.all([
52         PolymerTest.importHtml(
53             'chrome://resources/polymer/v1_0/polymer/polymer.html'),
54         PolymerTest.importHtml(
55             'chrome://resources/polymer/v1_0/iron-test-helpers/' +
56             'iron-test-helpers.html'),
57       ]);
58     });
59   },
62 /**
63  * Imports the HTML file.
64  * @param {string} src The URL to load.
65  * @return {Promise} A promise that is resolved/rejected on success/failure.
66  */
67 PolymerTest.importHtml = function(src) {
68   var link = document.createElement('link');
69   link.rel = 'import';
70   var promise = new Promise(function(resolve, reject) {
71     link.onload = resolve;
72     link.onerror = reject;
73   });
74   link.href = src;
75   document.head.appendChild(link);
76   return promise;
79 /**
80  * Removes all content from the body.
81  */
82 PolymerTest.clearBody = function() {
83   document.body.innerHTML = '';
86 /**
87  * Helper function to return the list of extra libraries relative to basePath.
88  */
89 PolymerTest.getLibraries = function(basePath) {
90   // Ensure basePath ends in '/'.
91   if (basePath.length && basePath[basePath.length - 1] != '/')
92     basePath += '/';
94   return PolymerTest.prototype.extraLibraries.map(function(library) {
95     return basePath + library;
96   });