From dc2c125c8eb46c04cf5a4662ccad01059c41ff6a Mon Sep 17 00:00:00 2001 From: Jose David Rodriguez Velasco Date: Tue, 7 May 2019 13:28:12 -0700 Subject: [PATCH 1/8] test(integration-karma): migrate non-composed-events-on-custom-element --- .../index.spec.js | 34 ++++++++++++++ .../x}/child/child.html | 0 .../x}/child/child.js | 0 .../x/container/container.html} | 4 +- .../x/container/container.js} | 2 +- ...-composed-events-on-custom-element.spec.js | 45 ------------------- 6 files changed, 37 insertions(+), 48 deletions(-) create mode 100644 packages/integration-karma/test/events/non-composed-events-on-custom-element/index.spec.js rename packages/{integration-tests/src/components/events/test-non-composed-events-on-custom-element/integration => integration-karma/test/events/non-composed-events-on-custom-element/x}/child/child.html (100%) rename packages/{integration-tests/src/components/events/test-non-composed-events-on-custom-element/integration => integration-karma/test/events/non-composed-events-on-custom-element/x}/child/child.js (100%) rename packages/{integration-tests/src/components/events/test-non-composed-events-on-custom-element/integration/non-composed-events-on-custom-element/non-composed-events-on-custom-element.html => integration-karma/test/events/non-composed-events-on-custom-element/x/container/container.html} (85%) rename packages/{integration-tests/src/components/events/test-non-composed-events-on-custom-element/integration/non-composed-events-on-custom-element/non-composed-events-on-custom-element.js => integration-karma/test/events/non-composed-events-on-custom-element/x/container/container.js} (80%) delete mode 100644 packages/integration-tests/src/components/events/test-non-composed-events-on-custom-element/non-composed-events-on-custom-element.spec.js diff --git a/packages/integration-karma/test/events/non-composed-events-on-custom-element/index.spec.js b/packages/integration-karma/test/events/non-composed-events-on-custom-element/index.spec.js new file mode 100644 index 0000000000..729cdc5f78 --- /dev/null +++ b/packages/integration-karma/test/events/non-composed-events-on-custom-element/index.spec.js @@ -0,0 +1,34 @@ +import { createElement } from 'test-utils'; +import Container from 'x/container'; + +describe('Non-composed events', () => { + it('should dispatch Event on the custom element', function() { + const elm = createElement('x-container', { is: Container }); + document.body.appendChild(elm); + + const child = elm.shadowRoot.querySelector('x-child'); + child.shadowRoot.querySelector('div').click(); + + return Promise.resolve().then(() => { + const elementWithResult = elm.shadowRoot.querySelector('.event-received-indicator'); + + expect(elementWithResult).not.toBeNull(); + }); + }); + + it('should dispatch CustomEvent on the custom element', function() { + const elm = createElement('x-container', { is: Container }); + document.body.appendChild(elm); + + const child = elm.shadowRoot.querySelector('x-child'); + child.shadowRoot.querySelector('div').click(); + + return Promise.resolve().then(() => { + const elementWithResult = elm.shadowRoot.querySelector( + '.custom-event-received-indicator' + ); + + expect(elementWithResult).not.toBeNull(); + }); + }); +}); diff --git a/packages/integration-tests/src/components/events/test-non-composed-events-on-custom-element/integration/child/child.html b/packages/integration-karma/test/events/non-composed-events-on-custom-element/x/child/child.html similarity index 100% rename from packages/integration-tests/src/components/events/test-non-composed-events-on-custom-element/integration/child/child.html rename to packages/integration-karma/test/events/non-composed-events-on-custom-element/x/child/child.html diff --git a/packages/integration-tests/src/components/events/test-non-composed-events-on-custom-element/integration/child/child.js b/packages/integration-karma/test/events/non-composed-events-on-custom-element/x/child/child.js similarity index 100% rename from packages/integration-tests/src/components/events/test-non-composed-events-on-custom-element/integration/child/child.js rename to packages/integration-karma/test/events/non-composed-events-on-custom-element/x/child/child.js diff --git a/packages/integration-tests/src/components/events/test-non-composed-events-on-custom-element/integration/non-composed-events-on-custom-element/non-composed-events-on-custom-element.html b/packages/integration-karma/test/events/non-composed-events-on-custom-element/x/container/container.html similarity index 85% rename from packages/integration-tests/src/components/events/test-non-composed-events-on-custom-element/integration/non-composed-events-on-custom-element/non-composed-events-on-custom-element.html rename to packages/integration-karma/test/events/non-composed-events-on-custom-element/x/container/container.html index ec62af2e00..84280f5b85 100644 --- a/packages/integration-tests/src/components/events/test-non-composed-events-on-custom-element/integration/non-composed-events-on-custom-element/non-composed-events-on-custom-element.html +++ b/packages/integration-karma/test/events/non-composed-events-on-custom-element/x/container/container.html @@ -1,8 +1,8 @@ diff --git a/packages/integration-tests/src/components/events/test-non-composed-events-on-custom-element/integration/non-composed-events-on-custom-element/non-composed-events-on-custom-element.js b/packages/integration-karma/test/events/non-composed-events-on-custom-element/x/container/container.js similarity index 80% rename from packages/integration-tests/src/components/events/test-non-composed-events-on-custom-element/integration/non-composed-events-on-custom-element/non-composed-events-on-custom-element.js rename to packages/integration-karma/test/events/non-composed-events-on-custom-element/x/container/container.js index 5f5208c482..c1b6a85428 100644 --- a/packages/integration-tests/src/components/events/test-non-composed-events-on-custom-element/integration/non-composed-events-on-custom-element/non-composed-events-on-custom-element.js +++ b/packages/integration-karma/test/events/non-composed-events-on-custom-element/x/container/container.js @@ -1,6 +1,6 @@ import { LightningElement, track } from 'lwc'; -export default class ComposedEvents extends LightningElement { +export default class Container extends LightningElement { @track eventReceived = false; @track customEventReceived = false; diff --git a/packages/integration-tests/src/components/events/test-non-composed-events-on-custom-element/non-composed-events-on-custom-element.spec.js b/packages/integration-tests/src/components/events/test-non-composed-events-on-custom-element/non-composed-events-on-custom-element.spec.js deleted file mode 100644 index 95f10670f3..0000000000 --- a/packages/integration-tests/src/components/events/test-non-composed-events-on-custom-element/non-composed-events-on-custom-element.spec.js +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright (c) 2018, salesforce.com, inc. - * All rights reserved. - * SPDX-License-Identifier: MIT - * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT - */ -const assert = require('assert'); - -describe('Non-composed events', () => { - const URL = 'http://localhost:4567/non-composed-events-on-custom-element'; - - before(() => { - browser.url(URL); - }); - - it('should dispatch Event on the custom element', function() { - browser.execute(function() { - document - .querySelector('integration-non-composed-events-on-custom-element') - .shadowRoot.querySelector('integration-child') - .click(); - }); - const indicator = browser.execute(function() { - return document - .querySelector('integration-non-composed-events-on-custom-element') - .shadowRoot.querySelector('.event-received-indicator'); - }); - assert.ok(indicator); - }); - - it('should dispatch CustomEvent on the custom element', function() { - browser.execute(function() { - document - .querySelector('integration-non-composed-events-on-custom-element') - .shadowRoot.querySelector('integration-child') - .click(); - }); - const indicator = browser.execute(function() { - return document - .querySelector('integration-non-composed-events-on-custom-element') - .shadowRoot.querySelector('.custom-event-received-indicator'); - }); - assert.ok(indicator); - }); -}); From 746fd9508ba6b3e1f2b96393cfcdfb69deff8683 Mon Sep 17 00:00:00 2001 From: Jose David Rodriguez Velasco Date: Tue, 7 May 2019 14:36:36 -0700 Subject: [PATCH 2/8] test(integration-karma): migrate events/slotted-native-element --- .../x/container/container.html | 5 --- .../x/container/container.js | 3 -- .../index.spec.js | 18 +++++++++ .../x/child/child.html | 0 .../x/child/child.js | 0 .../x/container/container.html | 12 ++++++ .../x/container/container.js | 5 +++ .../x/parent/parent.html | 0 .../x/parent/parent.js | 0 .../slottedNativeElement.html} | 0 .../slottedNativeElement.js} | 2 +- .../slotted-native-element-event-target.html | 5 --- .../slotted-native-element-event-target.js | 3 -- ...lotted-native-element-event-target.spec.js | 37 ------------------- 14 files changed, 36 insertions(+), 54 deletions(-) delete mode 100644 packages/integration-karma/test/events/slotted-custom-element-event-target/x/container/container.html delete mode 100644 packages/integration-karma/test/events/slotted-custom-element-event-target/x/container/container.js rename packages/integration-karma/test/events/{slotted-custom-element-event-target => slotted-event-target}/index.spec.js (52%) rename packages/integration-karma/test/events/{slotted-custom-element-event-target => slotted-event-target}/x/child/child.html (100%) rename packages/integration-karma/test/events/{slotted-custom-element-event-target => slotted-event-target}/x/child/child.js (100%) create mode 100644 packages/integration-karma/test/events/slotted-event-target/x/container/container.html create mode 100644 packages/integration-karma/test/events/slotted-event-target/x/container/container.js rename packages/integration-karma/test/events/{slotted-custom-element-event-target => slotted-event-target}/x/parent/parent.html (100%) rename packages/integration-karma/test/events/{slotted-custom-element-event-target => slotted-event-target}/x/parent/parent.js (100%) rename packages/{integration-tests/src/components/events/test-slotted-native-element-event-target/integration/child/child.html => integration-karma/test/events/slotted-event-target/x/slottedNativeElement/slottedNativeElement.html} (100%) rename packages/{integration-tests/src/components/events/test-slotted-native-element-event-target/integration/child/child.js => integration-karma/test/events/slotted-event-target/x/slottedNativeElement/slottedNativeElement.js} (72%) delete mode 100644 packages/integration-tests/src/components/events/test-slotted-native-element-event-target/integration/slotted-native-element-event-target/slotted-native-element-event-target.html delete mode 100644 packages/integration-tests/src/components/events/test-slotted-native-element-event-target/integration/slotted-native-element-event-target/slotted-native-element-event-target.js delete mode 100644 packages/integration-tests/src/components/events/test-slotted-native-element-event-target/slotted-native-element-event-target.spec.js diff --git a/packages/integration-karma/test/events/slotted-custom-element-event-target/x/container/container.html b/packages/integration-karma/test/events/slotted-custom-element-event-target/x/container/container.html deleted file mode 100644 index c349ab3554..0000000000 --- a/packages/integration-karma/test/events/slotted-custom-element-event-target/x/container/container.html +++ /dev/null @@ -1,5 +0,0 @@ - diff --git a/packages/integration-karma/test/events/slotted-custom-element-event-target/x/container/container.js b/packages/integration-karma/test/events/slotted-custom-element-event-target/x/container/container.js deleted file mode 100644 index 21a45d50a4..0000000000 --- a/packages/integration-karma/test/events/slotted-custom-element-event-target/x/container/container.js +++ /dev/null @@ -1,3 +0,0 @@ -import { LightningElement } from 'lwc'; - -export default class Container extends LightningElement {} diff --git a/packages/integration-karma/test/events/slotted-custom-element-event-target/index.spec.js b/packages/integration-karma/test/events/slotted-event-target/index.spec.js similarity index 52% rename from packages/integration-karma/test/events/slotted-custom-element-event-target/index.spec.js rename to packages/integration-karma/test/events/slotted-event-target/index.spec.js index e0676495a3..229ce34eb2 100644 --- a/packages/integration-karma/test/events/slotted-custom-element-event-target/index.spec.js +++ b/packages/integration-karma/test/events/slotted-event-target/index.spec.js @@ -18,4 +18,22 @@ describe('Event target in slot elements', () => { expect(elementWithResult.innerText).toBe('Event target is correct'); }); }); + + it('should receive event with correct target for slotted native element', function() { + const elm = createElement('x-container', { is: Container }); + elm.isNativeElement = true; + document.body.appendChild(elm); + + const trigger = elm.shadowRoot.querySelector('p'); + trigger.click(); + + return Promise.resolve().then(() => { + const elementWithResult = elm.shadowRoot + .querySelector('x-slotted-native-element') + .shadowRoot.querySelector('.correct-event-target'); + + expect(elementWithResult).not.toBeNull(); + expect(elementWithResult.innerText).toBe('Event target is correct'); + }); + }); }); diff --git a/packages/integration-karma/test/events/slotted-custom-element-event-target/x/child/child.html b/packages/integration-karma/test/events/slotted-event-target/x/child/child.html similarity index 100% rename from packages/integration-karma/test/events/slotted-custom-element-event-target/x/child/child.html rename to packages/integration-karma/test/events/slotted-event-target/x/child/child.html diff --git a/packages/integration-karma/test/events/slotted-custom-element-event-target/x/child/child.js b/packages/integration-karma/test/events/slotted-event-target/x/child/child.js similarity index 100% rename from packages/integration-karma/test/events/slotted-custom-element-event-target/x/child/child.js rename to packages/integration-karma/test/events/slotted-event-target/x/child/child.js diff --git a/packages/integration-karma/test/events/slotted-event-target/x/container/container.html b/packages/integration-karma/test/events/slotted-event-target/x/container/container.html new file mode 100644 index 0000000000..da2bf4c270 --- /dev/null +++ b/packages/integration-karma/test/events/slotted-event-target/x/container/container.html @@ -0,0 +1,12 @@ + diff --git a/packages/integration-karma/test/events/slotted-event-target/x/container/container.js b/packages/integration-karma/test/events/slotted-event-target/x/container/container.js new file mode 100644 index 0000000000..2b30c02681 --- /dev/null +++ b/packages/integration-karma/test/events/slotted-event-target/x/container/container.js @@ -0,0 +1,5 @@ +import { LightningElement, api } from 'lwc'; + +export default class Container extends LightningElement { + @api isNativeElement = false; +} diff --git a/packages/integration-karma/test/events/slotted-custom-element-event-target/x/parent/parent.html b/packages/integration-karma/test/events/slotted-event-target/x/parent/parent.html similarity index 100% rename from packages/integration-karma/test/events/slotted-custom-element-event-target/x/parent/parent.html rename to packages/integration-karma/test/events/slotted-event-target/x/parent/parent.html diff --git a/packages/integration-karma/test/events/slotted-custom-element-event-target/x/parent/parent.js b/packages/integration-karma/test/events/slotted-event-target/x/parent/parent.js similarity index 100% rename from packages/integration-karma/test/events/slotted-custom-element-event-target/x/parent/parent.js rename to packages/integration-karma/test/events/slotted-event-target/x/parent/parent.js diff --git a/packages/integration-tests/src/components/events/test-slotted-native-element-event-target/integration/child/child.html b/packages/integration-karma/test/events/slotted-event-target/x/slottedNativeElement/slottedNativeElement.html similarity index 100% rename from packages/integration-tests/src/components/events/test-slotted-native-element-event-target/integration/child/child.html rename to packages/integration-karma/test/events/slotted-event-target/x/slottedNativeElement/slottedNativeElement.html diff --git a/packages/integration-tests/src/components/events/test-slotted-native-element-event-target/integration/child/child.js b/packages/integration-karma/test/events/slotted-event-target/x/slottedNativeElement/slottedNativeElement.js similarity index 72% rename from packages/integration-tests/src/components/events/test-slotted-native-element-event-target/integration/child/child.js rename to packages/integration-karma/test/events/slotted-event-target/x/slottedNativeElement/slottedNativeElement.js index 3c6f15ea94..fc81efb63f 100644 --- a/packages/integration-tests/src/components/events/test-slotted-native-element-event-target/integration/child/child.js +++ b/packages/integration-karma/test/events/slotted-event-target/x/slottedNativeElement/slottedNativeElement.js @@ -1,6 +1,6 @@ import { LightningElement, track } from 'lwc'; -export default class Child extends LightningElement { +export default class SlottedNativeElement extends LightningElement { @track eventTargetIsPTag = false; handleClick(evt) { this.eventTargetIsPTag = evt.target.tagName === 'P'; diff --git a/packages/integration-tests/src/components/events/test-slotted-native-element-event-target/integration/slotted-native-element-event-target/slotted-native-element-event-target.html b/packages/integration-tests/src/components/events/test-slotted-native-element-event-target/integration/slotted-native-element-event-target/slotted-native-element-event-target.html deleted file mode 100644 index 9604259057..0000000000 --- a/packages/integration-tests/src/components/events/test-slotted-native-element-event-target/integration/slotted-native-element-event-target/slotted-native-element-event-target.html +++ /dev/null @@ -1,5 +0,0 @@ - diff --git a/packages/integration-tests/src/components/events/test-slotted-native-element-event-target/integration/slotted-native-element-event-target/slotted-native-element-event-target.js b/packages/integration-tests/src/components/events/test-slotted-native-element-event-target/integration/slotted-native-element-event-target/slotted-native-element-event-target.js deleted file mode 100644 index 36f3a19ee1..0000000000 --- a/packages/integration-tests/src/components/events/test-slotted-native-element-event-target/integration/slotted-native-element-event-target/slotted-native-element-event-target.js +++ /dev/null @@ -1,3 +0,0 @@ -import { LightningElement } from 'lwc'; - -export default class SlottedElementEventTarget extends LightningElement {} diff --git a/packages/integration-tests/src/components/events/test-slotted-native-element-event-target/slotted-native-element-event-target.spec.js b/packages/integration-tests/src/components/events/test-slotted-native-element-event-target/slotted-native-element-event-target.spec.js deleted file mode 100644 index 09850baa53..0000000000 --- a/packages/integration-tests/src/components/events/test-slotted-native-element-event-target/slotted-native-element-event-target.spec.js +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright (c) 2018, salesforce.com, inc. - * All rights reserved. - * SPDX-License-Identifier: MIT - * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT - */ - -describe('Event target in slot elements', () => { - const URL = 'http://localhost:4567/slotted-native-element-event-target/'; - - before(() => { - browser.url(URL); - }); - - it('should receive event with correct target', function() { - const p = browser.execute(function() { - return document - .querySelector('integration-slotted-native-element-event-target') - .shadowRoot.querySelector('p'); - }); - p.click(); - - browser.waitUntil( - () => { - var child = browser.execute(function() { - return document - .querySelector('integration-slotted-native-element-event-target') - .shadowRoot.querySelector('integration-child') - .shadowRoot.querySelector('.correct-event-target'); - }); - return child.value !== null && child.getText() === 'Event target is correct'; - }, - 500, - "did not receive expected event target in slot element's parent handler" - ); - }); -}); From b1f3d453fac664d0ef85003e91e20e632d776e71 Mon Sep 17 00:00:00 2001 From: Jose David Rodriguez Velasco Date: Tue, 7 May 2019 14:48:06 -0700 Subject: [PATCH 3/8] test(integration-karma): migrate events/window-event-listiner --- .../window-event-listener/index.spec.js | 19 ++++++++++++ .../x/container/container.html} | 0 .../x/container/container.js} | 2 +- .../window-event-listener.spec.js | 30 ------------------- 4 files changed, 20 insertions(+), 31 deletions(-) create mode 100644 packages/integration-karma/test/events/window-event-listener/index.spec.js rename packages/{integration-tests/src/components/events/test-window-event-listener/integration/window-event-listener/window-event-listener.html => integration-karma/test/events/window-event-listener/x/container/container.html} (100%) rename packages/{integration-tests/src/components/events/test-window-event-listener/integration/window-event-listener/window-event-listener.js => integration-karma/test/events/window-event-listener/x/container/container.js} (82%) delete mode 100644 packages/integration-tests/src/components/events/test-window-event-listener/window-event-listener.spec.js diff --git a/packages/integration-karma/test/events/window-event-listener/index.spec.js b/packages/integration-karma/test/events/window-event-listener/index.spec.js new file mode 100644 index 0000000000..1d12e05db8 --- /dev/null +++ b/packages/integration-karma/test/events/window-event-listener/index.spec.js @@ -0,0 +1,19 @@ +import { createElement } from 'test-utils'; +import Container from 'x/container'; + +describe('Event Target on window event listener', () => { + it('should return correct target', function() { + const elm = createElement('x-container', { is: Container }); + document.body.appendChild(elm); + + const trigger = elm.shadowRoot.querySelector('button'); + trigger.click(); + + return Promise.resolve().then(() => { + const elementWithResult = elm.shadowRoot.querySelector('.window-event-target-tagname'); + + expect(elementWithResult).not.toBeNull(); + expect(elementWithResult.innerText).toBe('x-container'); + }); + }); +}); diff --git a/packages/integration-tests/src/components/events/test-window-event-listener/integration/window-event-listener/window-event-listener.html b/packages/integration-karma/test/events/window-event-listener/x/container/container.html similarity index 100% rename from packages/integration-tests/src/components/events/test-window-event-listener/integration/window-event-listener/window-event-listener.html rename to packages/integration-karma/test/events/window-event-listener/x/container/container.html diff --git a/packages/integration-tests/src/components/events/test-window-event-listener/integration/window-event-listener/window-event-listener.js b/packages/integration-karma/test/events/window-event-listener/x/container/container.js similarity index 82% rename from packages/integration-tests/src/components/events/test-window-event-listener/integration/window-event-listener/window-event-listener.js rename to packages/integration-karma/test/events/window-event-listener/x/container/container.js index 142407364c..b35983910c 100644 --- a/packages/integration-tests/src/components/events/test-window-event-listener/integration/window-event-listener/window-event-listener.js +++ b/packages/integration-karma/test/events/window-event-listener/x/container/container.js @@ -1,6 +1,6 @@ import { LightningElement, track } from 'lwc'; -export default class WindowEventListener extends LightningElement { +export default class Container extends LightningElement { @track windowEventTargetTagName = ''; connectedCallback() { window.addEventListener('click', evt => { diff --git a/packages/integration-tests/src/components/events/test-window-event-listener/window-event-listener.spec.js b/packages/integration-tests/src/components/events/test-window-event-listener/window-event-listener.spec.js deleted file mode 100644 index 18446aae80..0000000000 --- a/packages/integration-tests/src/components/events/test-window-event-listener/window-event-listener.spec.js +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright (c) 2018, salesforce.com, inc. - * All rights reserved. - * SPDX-License-Identifier: MIT - * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT - */ -const assert = require('assert'); - -describe('Event Target on window event listener', () => { - const URL = 'http://localhost:4567/window-event-listener/'; - - before(() => { - browser.url(URL); - }); - - it('should return correct target', function() { - browser.execute(function() { - document - .querySelector('integration-window-event-listener') - .shadowRoot.querySelector('button') - .click(); - }); - const indicator = browser.execute(function() { - return document - .querySelector('integration-window-event-listener') - .shadowRoot.querySelector('.window-event-target-tagname'); - }); - assert.deepEqual(indicator.getText(), 'integration-window-event-listener'); - }); -}); From 869026e907d23a019d9aed8051b9432462e1b1c0 Mon Sep 17 00:00:00 2001 From: Jose David Rodriguez Velasco Date: Tue, 7 May 2019 16:19:32 -0700 Subject: [PATCH 4/8] test(integration-karma): roolback migrate window-event-listener // The composed-event-click-polyfill doesn't work when native Shadow DOM is enabled on Safari 12.0.0 (it has been fixed // with Safari 12.0.1). The polyfill only patches the event javascript wrapper and doesn't have any effect on how Webkit // make the event bubbles. --- .../window-event-listener/index.spec.js | 7 +++- .../window-event-listener.html | 4 +++ .../window-event-listener.js | 13 +++++++ .../window-event-listener.spec.js | 35 +++++++++++++++++++ 4 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 packages/integration-tests/src/components/events/test-window-event-listener/integration/window-event-listener/window-event-listener.html create mode 100644 packages/integration-tests/src/components/events/test-window-event-listener/integration/window-event-listener/window-event-listener.js create mode 100644 packages/integration-tests/src/components/events/test-window-event-listener/window-event-listener.spec.js diff --git a/packages/integration-karma/test/events/window-event-listener/index.spec.js b/packages/integration-karma/test/events/window-event-listener/index.spec.js index 1d12e05db8..f66f11d9a1 100644 --- a/packages/integration-karma/test/events/window-event-listener/index.spec.js +++ b/packages/integration-karma/test/events/window-event-listener/index.spec.js @@ -2,7 +2,12 @@ import { createElement } from 'test-utils'; import Container from 'x/container'; describe('Event Target on window event listener', () => { - it('should return correct target', function() { + // The composed-event-click-polyfill doesn't work when native Shadow DOM is enabled on Safari 12.0.0 (it has been fixed + // with Safari 12.0.1). The polyfill only patches the event javascript wrapper and doesn't have any effect on how Webkit + // make the event bubbles. + // TODO: Enable this test again once Sauce Labs supports Safari version >= 12.0.1 + // TODO: Also delete the corresponding integration-test + xit('should return correct target', function() { const elm = createElement('x-container', { is: Container }); document.body.appendChild(elm); diff --git a/packages/integration-tests/src/components/events/test-window-event-listener/integration/window-event-listener/window-event-listener.html b/packages/integration-tests/src/components/events/test-window-event-listener/integration/window-event-listener/window-event-listener.html new file mode 100644 index 0000000000..4135a62452 --- /dev/null +++ b/packages/integration-tests/src/components/events/test-window-event-listener/integration/window-event-listener/window-event-listener.html @@ -0,0 +1,4 @@ + diff --git a/packages/integration-tests/src/components/events/test-window-event-listener/integration/window-event-listener/window-event-listener.js b/packages/integration-tests/src/components/events/test-window-event-listener/integration/window-event-listener/window-event-listener.js new file mode 100644 index 0000000000..142407364c --- /dev/null +++ b/packages/integration-tests/src/components/events/test-window-event-listener/integration/window-event-listener/window-event-listener.js @@ -0,0 +1,13 @@ +import { LightningElement, track } from 'lwc'; + +export default class WindowEventListener extends LightningElement { + @track windowEventTargetTagName = ''; + connectedCallback() { + window.addEventListener('click', evt => { + this.windowEventTargetTagName = evt.target.tagName.toLowerCase(); + }); + } + handleClick() { + // empty handler + } +} diff --git a/packages/integration-tests/src/components/events/test-window-event-listener/window-event-listener.spec.js b/packages/integration-tests/src/components/events/test-window-event-listener/window-event-listener.spec.js new file mode 100644 index 0000000000..5d732d51c3 --- /dev/null +++ b/packages/integration-tests/src/components/events/test-window-event-listener/window-event-listener.spec.js @@ -0,0 +1,35 @@ +/* + * Copyright (c) 2018, salesforce.com, inc. + * All rights reserved. + * SPDX-License-Identifier: MIT + * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT + */ +const assert = require('assert'); + +describe('Event Target on window event listener', () => { + const URL = 'http://localhost:4567/window-event-listener/'; + + before(() => { + browser.url(URL); + }); + + // The composed-event-click-polyfill doesn't work when native Shadow DOM is enabled on Safari 12.0.0 (it has been fixed + // with Safari 12.0.1). The polyfill only patches the event javascript wrapper and doesn't have any effect on how Webkit + // make the event bubbles. + // TODO: Remove this test once Sauce Labs supports Safari version >= 12.0.1 + // TODO: Enable the corresponding integration-karma test + it('should return correct target', function() { + browser.execute(function() { + document + .querySelector('integration-window-event-listener') + .shadowRoot.querySelector('button') + .click(); + }); + const indicator = browser.execute(function() { + return document + .querySelector('integration-window-event-listener') + .shadowRoot.querySelector('.window-event-target-tagname'); + }); + assert.deepEqual(indicator.getText(), 'integration-window-event-listener'); + }); +}); From 4399a074fcd951de626da9b546ea3f7ac2ee8403 Mon Sep 17 00:00:00 2001 From: Jose David Rodriguez Velasco Date: Wed, 8 May 2019 09:27:37 -0700 Subject: [PATCH 5/8] test(integration-karma): migrate rendering/duplicate-text-rendering --- .../duplicate-text-rendering/index.spec.js | 22 +++++++++++++++++++ .../x/container/container.html} | 0 .../x/container/container.js} | 2 +- .../duplicate-text-rendering.spec.js | 20 ----------------- 4 files changed, 23 insertions(+), 21 deletions(-) create mode 100644 packages/integration-karma/test/rendering/duplicate-text-rendering/index.spec.js rename packages/{integration-tests/src/components/rendering/test-duplicate-text-rendering/integration/duplicate-text-rendering/duplicate-text-rendering.html => integration-karma/test/rendering/duplicate-text-rendering/x/container/container.html} (100%) rename packages/{integration-tests/src/components/rendering/test-duplicate-text-rendering/integration/duplicate-text-rendering/duplicate-text-rendering.js => integration-karma/test/rendering/duplicate-text-rendering/x/container/container.js} (89%) delete mode 100644 packages/integration-tests/src/components/rendering/test-duplicate-text-rendering/duplicate-text-rendering.spec.js diff --git a/packages/integration-karma/test/rendering/duplicate-text-rendering/index.spec.js b/packages/integration-karma/test/rendering/duplicate-text-rendering/index.spec.js new file mode 100644 index 0000000000..838df7fbf8 --- /dev/null +++ b/packages/integration-karma/test/rendering/duplicate-text-rendering/index.spec.js @@ -0,0 +1,22 @@ +import { createElement } from 'test-utils'; +import Container from 'x/container'; + +describe('Dynamic text nodes rendering duplicate text', () => { + it('should not render duplicate text', function() { + const elm = createElement('x-container', { is: Container }); + document.body.appendChild(elm); + + elm.click(); + + return Promise.resolve().then(() => { + const textInFirstCheck = elm.shadowRoot.textContent; + // This first check is to verify that there is no extra text an any moment. + expect(textInFirstCheck).not.toBe('ab'); + + return Promise.resolve().then(() => { + const textInFirstCheck = elm.shadowRoot.textContent; + expect(textInFirstCheck).toBe('b'); + }); + }); + }); +}); diff --git a/packages/integration-tests/src/components/rendering/test-duplicate-text-rendering/integration/duplicate-text-rendering/duplicate-text-rendering.html b/packages/integration-karma/test/rendering/duplicate-text-rendering/x/container/container.html similarity index 100% rename from packages/integration-tests/src/components/rendering/test-duplicate-text-rendering/integration/duplicate-text-rendering/duplicate-text-rendering.html rename to packages/integration-karma/test/rendering/duplicate-text-rendering/x/container/container.html diff --git a/packages/integration-tests/src/components/rendering/test-duplicate-text-rendering/integration/duplicate-text-rendering/duplicate-text-rendering.js b/packages/integration-karma/test/rendering/duplicate-text-rendering/x/container/container.js similarity index 89% rename from packages/integration-tests/src/components/rendering/test-duplicate-text-rendering/integration/duplicate-text-rendering/duplicate-text-rendering.js rename to packages/integration-karma/test/rendering/duplicate-text-rendering/x/container/container.js index 5b7b0d8c10..cd495c034d 100644 --- a/packages/integration-tests/src/components/rendering/test-duplicate-text-rendering/integration/duplicate-text-rendering/duplicate-text-rendering.js +++ b/packages/integration-karma/test/rendering/duplicate-text-rendering/x/container/container.js @@ -1,6 +1,6 @@ import { LightningElement, track } from 'lwc'; -export default class App extends LightningElement { +export default class Container extends LightningElement { @track text = [ { text: 'a', diff --git a/packages/integration-tests/src/components/rendering/test-duplicate-text-rendering/duplicate-text-rendering.spec.js b/packages/integration-tests/src/components/rendering/test-duplicate-text-rendering/duplicate-text-rendering.spec.js deleted file mode 100644 index d7e1323c08..0000000000 --- a/packages/integration-tests/src/components/rendering/test-duplicate-text-rendering/duplicate-text-rendering.spec.js +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright (c) 2018, salesforce.com, inc. - * All rights reserved. - * SPDX-License-Identifier: MIT - * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT - */ -const assert = require('assert'); -describe('Dynamic text nodes rendering duplicate text', () => { - const URL = 'http://localhost:4567/duplicate-text-rendering'; - - before(() => { - browser.url(URL); - }); - - it('should not render duplicate text', function() { - browser.click('integration-duplicate-text-rendering'); - assert.notDeepEqual(browser.getText('integration-duplicate-text-rendering'), 'ab'); - assert.deepEqual(browser.getText('integration-duplicate-text-rendering'), 'b'); - }); -}); From 27c43fa87e84fba7f9c30c9150045e49702f54b8 Mon Sep 17 00:00:00 2001 From: Jose David Rodriguez Velasco Date: Wed, 8 May 2019 09:36:24 -0700 Subject: [PATCH 6/8] test(integration-karma): migrate rendering/form-tag --- .../test/rendering/form-tag/index.spec.js | 16 ++++++++++++ .../form-tag/x/container/container.html} | 0 .../form-tag/x/container/container.js | 3 +++ .../rendering/test-form-tag/form-tag.spec.js | 25 ------------------- .../integration/form-tag/form-tag.js | 3 --- 5 files changed, 19 insertions(+), 28 deletions(-) create mode 100644 packages/integration-karma/test/rendering/form-tag/index.spec.js rename packages/{integration-tests/src/components/rendering/test-form-tag/integration/form-tag/form-tag.html => integration-karma/test/rendering/form-tag/x/container/container.html} (100%) create mode 100644 packages/integration-karma/test/rendering/form-tag/x/container/container.js delete mode 100644 packages/integration-tests/src/components/rendering/test-form-tag/form-tag.spec.js delete mode 100644 packages/integration-tests/src/components/rendering/test-form-tag/integration/form-tag/form-tag.js diff --git a/packages/integration-karma/test/rendering/form-tag/index.spec.js b/packages/integration-karma/test/rendering/form-tag/index.spec.js new file mode 100644 index 0000000000..151251bd3f --- /dev/null +++ b/packages/integration-karma/test/rendering/form-tag/index.spec.js @@ -0,0 +1,16 @@ +import { createElement } from 'test-utils'; +import Container from 'x/container'; + +describe('Form tag rendering', () => { + it('should have the right value', function() { + const elm = createElement('x-container', { is: Container }); + document.body.appendChild(elm); + + return Promise.resolve().then(() => { + const nodeWithTextInsideForm = elm.shadowRoot.querySelector('.form-text'); + + expect(nodeWithTextInsideForm).not.toBeNull(); + expect(nodeWithTextInsideForm.textContent).toBe('Form did render'); + }); + }); +}); diff --git a/packages/integration-tests/src/components/rendering/test-form-tag/integration/form-tag/form-tag.html b/packages/integration-karma/test/rendering/form-tag/x/container/container.html similarity index 100% rename from packages/integration-tests/src/components/rendering/test-form-tag/integration/form-tag/form-tag.html rename to packages/integration-karma/test/rendering/form-tag/x/container/container.html diff --git a/packages/integration-karma/test/rendering/form-tag/x/container/container.js b/packages/integration-karma/test/rendering/form-tag/x/container/container.js new file mode 100644 index 0000000000..21a45d50a4 --- /dev/null +++ b/packages/integration-karma/test/rendering/form-tag/x/container/container.js @@ -0,0 +1,3 @@ +import { LightningElement } from 'lwc'; + +export default class Container extends LightningElement {} diff --git a/packages/integration-tests/src/components/rendering/test-form-tag/form-tag.spec.js b/packages/integration-tests/src/components/rendering/test-form-tag/form-tag.spec.js deleted file mode 100644 index 15ebda6773..0000000000 --- a/packages/integration-tests/src/components/rendering/test-form-tag/form-tag.spec.js +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright (c) 2018, salesforce.com, inc. - * All rights reserved. - * SPDX-License-Identifier: MIT - * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT - */ -const assert = require('assert'); - -describe('Object keys', () => { - const URL = 'http://localhost:4567/form-tag'; - - before(() => { - browser.url(URL); - }); - - it('should have the right value', function() { - const element = browser.execute(function() { - return document - .querySelector('integration-form-tag') - .shadowRoot.querySelector('.form-text'); - }); - assert.ok(element); - assert.deepEqual(element.getText(), 'Form did render'); - }); -}); diff --git a/packages/integration-tests/src/components/rendering/test-form-tag/integration/form-tag/form-tag.js b/packages/integration-tests/src/components/rendering/test-form-tag/integration/form-tag/form-tag.js deleted file mode 100644 index 7472a5663d..0000000000 --- a/packages/integration-tests/src/components/rendering/test-form-tag/integration/form-tag/form-tag.js +++ /dev/null @@ -1,3 +0,0 @@ -import { LightningElement } from 'lwc'; - -export default class TestFormTag extends LightningElement {} From f8e46341f027bf5e466f2d99ae2833715de1a6f8 Mon Sep 17 00:00:00 2001 From: Jose David Rodriguez Velasco Date: Wed, 8 May 2019 09:47:55 -0700 Subject: [PATCH 7/8] test(integration-karma): migrate rendering/nested-state --- .../test/rendering/nested-state/index.spec.js | 16 +++++++++++++ .../nested-state/x/container/container.html} | 0 .../nested-state/x/container/container.js} | 2 +- .../test-nested-state/nested-state.spec.js | 24 ------------------- 4 files changed, 17 insertions(+), 25 deletions(-) create mode 100644 packages/integration-karma/test/rendering/nested-state/index.spec.js rename packages/{integration-tests/src/components/rendering/test-nested-state/integration/nested-state/nested-state.html => integration-karma/test/rendering/nested-state/x/container/container.html} (100%) rename packages/{integration-tests/src/components/rendering/test-nested-state/integration/nested-state/nested-state.js => integration-karma/test/rendering/nested-state/x/container/container.js} (94%) delete mode 100644 packages/integration-tests/src/components/rendering/test-nested-state/nested-state.spec.js diff --git a/packages/integration-karma/test/rendering/nested-state/index.spec.js b/packages/integration-karma/test/rendering/nested-state/index.spec.js new file mode 100644 index 0000000000..55db0cdeaa --- /dev/null +++ b/packages/integration-karma/test/rendering/nested-state/index.spec.js @@ -0,0 +1,16 @@ +import { createElement } from 'test-utils'; +import Container from 'x/container'; + +describe('Nested state', () => { + it('Object keys should have the right value', function() { + const elm = createElement('x-container', { is: Container }); + document.body.appendChild(elm); + + return Promise.resolve().then(() => { + const nodeWithRenderedNestedState = elm.shadowRoot.querySelector('.key'); + + expect(nodeWithRenderedNestedState).not.toBeNull(); + expect(nodeWithRenderedNestedState.textContent).toBe('yes'); + }); + }); +}); diff --git a/packages/integration-tests/src/components/rendering/test-nested-state/integration/nested-state/nested-state.html b/packages/integration-karma/test/rendering/nested-state/x/container/container.html similarity index 100% rename from packages/integration-tests/src/components/rendering/test-nested-state/integration/nested-state/nested-state.html rename to packages/integration-karma/test/rendering/nested-state/x/container/container.html diff --git a/packages/integration-tests/src/components/rendering/test-nested-state/integration/nested-state/nested-state.js b/packages/integration-karma/test/rendering/nested-state/x/container/container.js similarity index 94% rename from packages/integration-tests/src/components/rendering/test-nested-state/integration/nested-state/nested-state.js rename to packages/integration-karma/test/rendering/nested-state/x/container/container.js index 8b294afcbf..094930a2ff 100644 --- a/packages/integration-tests/src/components/rendering/test-nested-state/integration/nested-state/nested-state.js +++ b/packages/integration-karma/test/rendering/nested-state/x/container/container.js @@ -12,7 +12,7 @@ function getType(recordId, recordUi) { return masterRecordTypeId; } -export default class ObjectKeys extends LightningElement { +export default class Container extends LightningElement { state = { test: 1, type: 'default', diff --git a/packages/integration-tests/src/components/rendering/test-nested-state/nested-state.spec.js b/packages/integration-tests/src/components/rendering/test-nested-state/nested-state.spec.js deleted file mode 100644 index 4ab66b31c6..0000000000 --- a/packages/integration-tests/src/components/rendering/test-nested-state/nested-state.spec.js +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright (c) 2018, salesforce.com, inc. - * All rights reserved. - * SPDX-License-Identifier: MIT - * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT - */ -const assert = require('assert'); -describe('Object keys', () => { - const URL = 'http://localhost:4567/nested-state'; - - before(() => { - browser.url(URL); - }); - - it('should have the right value', function() { - const element = browser.execute(function() { - return document - .querySelector('integration-nested-state') - .shadowRoot.querySelector('.key'); - }); - assert.ok(element); - assert.deepEqual(element.getText(), 'yes'); - }); -}); From 5a70194ebe54da83f2e52eda11b3f25542ed3fbe Mon Sep 17 00:00:00 2001 From: Jose David Rodriguez Velasco Date: Wed, 8 May 2019 10:23:27 -0700 Subject: [PATCH 8/8] test(integration-karma): migrate rendering/null-logging --- .../test/rendering/null-logging/index.spec.js | 20 +++++++++++++ .../null-logging/x/container/container.html | 4 +++ .../null-logging/x/container/container.js} | 2 +- .../null-logging/null-logging.html | 6 ---- .../test-null-logging/null-logging.spec.js | 29 ------------------- 5 files changed, 25 insertions(+), 36 deletions(-) create mode 100644 packages/integration-karma/test/rendering/null-logging/index.spec.js create mode 100644 packages/integration-karma/test/rendering/null-logging/x/container/container.html rename packages/{integration-tests/src/components/rendering/test-null-logging/integration/null-logging/null-logging.js => integration-karma/test/rendering/null-logging/x/container/container.js} (78%) delete mode 100644 packages/integration-tests/src/components/rendering/test-null-logging/integration/null-logging/null-logging.html delete mode 100644 packages/integration-tests/src/components/rendering/test-null-logging/null-logging.spec.js diff --git a/packages/integration-karma/test/rendering/null-logging/index.spec.js b/packages/integration-karma/test/rendering/null-logging/index.spec.js new file mode 100644 index 0000000000..bdff6b8cb2 --- /dev/null +++ b/packages/integration-karma/test/rendering/null-logging/index.spec.js @@ -0,0 +1,20 @@ +import { createElement } from 'test-utils'; +import Container from 'x/container'; + +/** + * https://github.com/salesforce/lwc/issues/720 + */ +describe('Issue 720: Wrap all string literal variables with toString method', () => { + it('should not have have an error accessing state.foo', function() { + const elm = createElement('x-container', { is: Container }); + document.body.appendChild(elm); + + return Promise.resolve().then(() => { + const hasError = elm.shadowRoot.querySelector('.has-error'); + const noError = elm.shadowRoot.querySelector('.no-error'); + + expect(hasError).toBeNull(); + expect(noError).not.toBeNull(); + }); + }); +}); diff --git a/packages/integration-karma/test/rendering/null-logging/x/container/container.html b/packages/integration-karma/test/rendering/null-logging/x/container/container.html new file mode 100644 index 0000000000..f8bcee6739 --- /dev/null +++ b/packages/integration-karma/test/rendering/null-logging/x/container/container.html @@ -0,0 +1,4 @@ + diff --git a/packages/integration-tests/src/components/rendering/test-null-logging/integration/null-logging/null-logging.js b/packages/integration-karma/test/rendering/null-logging/x/container/container.js similarity index 78% rename from packages/integration-tests/src/components/rendering/test-null-logging/integration/null-logging/null-logging.js rename to packages/integration-karma/test/rendering/null-logging/x/container/container.js index 0cd5c61e7c..656ec9b998 100644 --- a/packages/integration-tests/src/components/rendering/test-null-logging/integration/null-logging/null-logging.js +++ b/packages/integration-karma/test/rendering/null-logging/x/container/container.js @@ -1,6 +1,6 @@ import { LightningElement, track } from 'lwc'; -export default class ReactiveObjectLog extends LightningElement { +export default class Container extends LightningElement { @track foo = null; @track errorMessage; connectedCallback() { diff --git a/packages/integration-tests/src/components/rendering/test-null-logging/integration/null-logging/null-logging.html b/packages/integration-tests/src/components/rendering/test-null-logging/integration/null-logging/null-logging.html deleted file mode 100644 index c95b2b1410..0000000000 --- a/packages/integration-tests/src/components/rendering/test-null-logging/integration/null-logging/null-logging.html +++ /dev/null @@ -1,6 +0,0 @@ - diff --git a/packages/integration-tests/src/components/rendering/test-null-logging/null-logging.spec.js b/packages/integration-tests/src/components/rendering/test-null-logging/null-logging.spec.js deleted file mode 100644 index d5989055ad..0000000000 --- a/packages/integration-tests/src/components/rendering/test-null-logging/null-logging.spec.js +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright (c) 2018, salesforce.com, inc. - * All rights reserved. - * SPDX-License-Identifier: MIT - * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT - */ -const assert = require('assert'); -describe('Issue 720: Wrap all string literal variables with toString method', () => { - const URL = 'http://localhost:4567/null-logging'; - - before(() => { - browser.url(URL); - }); - - it('should not have have an error accessing state.foo', function() { - const hasError = browser.execute(function() { - return document - .querySelector('integration-null-logging') - .shadowRoot.querySelectorAll('.has-error'); - }); - const noError = browser.execute(function() { - return document - .querySelector('integration-null-logging') - .shadowRoot.querySelectorAll('.no-error'); - }); - assert.deepEqual(hasError.value.length, 0); - assert.deepEqual(noError.value.length, 1); - }); -});