Files
polymer/test/unit/globals.html
2018-04-19 18:19:39 -07:00

107 lines
2.8 KiB
HTML

<!doctype html>
<!--
@license
Copyright (c) 2017 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>
<meta charset="utf-8">
<script src="wct-browser-config.js"></script>
<script src="../../node_modules/wct-browser-legacy/browser.js"></script>
<script src="../../node_modules/@webcomponents/webcomponentsjs/webcomponents-lite.js"></script>
<script type="module">
/* global origOwnProps:true */
window.origOwnProps = Object.getOwnPropertyNames(window).reduce(function(props, prop) {
return props[prop] = true && props;
}, {});
</script>
<script type="module" src="../../polymer-legacy.js"></script>
<body>
<!-- Exercise the core features of Polymer -->
<dom-module id="shared-styles">
<template strip-whitespace>
<style>:host{ --foo: var(--bar); };</style>
</template>
</dom-module>
<dom-module id="global-test">
<template strip-whitespace>
<style include="shared-styles">:host{ --foo: var(--bar); };</style>
<div class$="{{stuff.is.here}}">{{bindings(are, cool)}}</div>
</template>
<script type="module">
import { Polymer } from '../../polymer-legacy.js';
Polymer({
is: 'global-test',
properties: {
foo: {
notify: true,
reflectToAttribute: true,
observer: 'observeFoo',
value: 'foo'
}
},
observers: ['observeFooDeep(foo.*)'],
hostAttributes: {
tabIndex: 0
},
listeners: {
tap: 'handleTap'
},
observeFooDeep() {},
observeFoo() {}
});
</script>
</dom-module>
<global-test></global-test>
<script type="module">
import { Polymer } from '../../polymer-legacy.js';
suite('globals', function() {
var expected = {
origOwnProps: true,
// Test harness
a11ySuite: true,
assert: true,
expect: true,
run: true,
fixture: true,
replace: true,
stub: true,
// Polymer
Polymer: true,
currentImport: true,
JSCompiler_renameProperty: true,
// weird safari + selenium globals
alert: true,
confirm: true,
prompt: true
};
test('check global leakage', function() {
// Only run on native ES6 browsers, to avoid transpiler globals
if (!window._classCallCheck) {
var newProps = Object.getOwnPropertyNames(window).filter(function(prop) {
return !origOwnProps[prop] && !expected[prop];
});
assert.equal(newProps.length, 0, 'new globals added: \n' + newProps.sort().join('\n'));
}
});
});
</script>
</body>
</html>