diff --git a/integration/ng_elements/e2e/app.e2e-spec.ts b/integration/ng_elements/e2e/app.e2e-spec.ts
index 84acb3505b0..8da6d63c439 100644
--- a/integration/ng_elements/e2e/app.e2e-spec.ts
+++ b/integration/ng_elements/e2e/app.e2e-spec.ts
@@ -1,22 +1,42 @@
-import { browser, element, ExpectedConditions as EC, by } from 'protractor';
+import {browser, by, element, ElementFinder, ExpectedConditions as EC} from 'protractor';
browser.waitForAngularEnabled(false);
describe('Element E2E Tests', function () {
describe('Hello World Elements', () => {
- const helloWorldEl = element(by.css('hello-world-el'));
-
beforeEach(() => browser.get('hello-world.html'));
- it('should display "Hello World!"', function () {
- expect(helloWorldEl.getText()).toEqual('Hello World!');
+ describe('(with default view encapsulation)', () => {
+ const helloWorldEl = element(by.css('hello-world-el'));
+
+ it('should display "Hello World!"', function () {
+ expect(helloWorldEl.getText()).toBe('Hello World!');
+ });
+
+ it('should display "Hello Foo!" via name attribute', function () {
+ const input = element(by.css('input[type=text]'));
+ input.sendKeys('Foo');
+
+ // Make tests less flaky on CI by waiting up to 5s for the element text to be updated.
+ browser.wait(EC.textToBePresentInElement(helloWorldEl, 'Hello Foo!'), 5000);
+ });
});
- it('should display "Hello Foo!" via name attribute', function () {
- const input = element(by.css('input[type=text]'));
- input.sendKeys('Foo');
+ describe('(with `ShadowDom` view encapsulation)', () => {
+ const helloWorldShadowEl = element(by.css('hello-world-shadow-el'));
+ const getShadowDomText = (el: ElementFinder) =>
+ browser.executeScript('return arguments[0].shadowRoot.textContent', el);
- // Make tests less flaky on CI by waiting up to 5s for the element text to be updated.
- browser.wait(EC.textToBePresentInElement(helloWorldEl, 'Hello Foo!'), 5000);
+ it('should display "Hello World!"', function () {
+ expect(getShadowDomText(helloWorldShadowEl)).toBe('Hello World!');
+ });
+
+ it('should display "Hello Foo!" via name attribute', function () {
+ const input = element(by.css('input[type=text]'));
+ input.sendKeys('Foo');
+
+ // Make tests less flaky on CI by waiting up to 5s for the element text to be updated.
+ browser.wait(async () => await getShadowDomText(helloWorldShadowEl) === 'Hello Foo!', 5000);
+ });
});
});
});
diff --git a/integration/ng_elements/src/app.ts b/integration/ng_elements/src/app.ts
index 689930c4f90..23dbddb9972 100644
--- a/integration/ng_elements/src/app.ts
+++ b/integration/ng_elements/src/app.ts
@@ -11,7 +11,7 @@ import {HelloWorldComponent, HelloWorldShadowComponent, TestCardComponent} from
imports: [BrowserModule],
})
export class AppModule {
- constructor(private injector: Injector) {
+ constructor(injector: Injector) {
customElements.define('hello-world-el', createCustomElement(HelloWorldComponent, {injector}));
customElements.define(
'hello-world-shadow-el', createCustomElement(HelloWorldShadowComponent, {injector}));
diff --git a/integration/ng_elements/src/elements.ts b/integration/ng_elements/src/elements.ts
index 95f17182b4a..33276decda8 100644
--- a/integration/ng_elements/src/elements.ts
+++ b/integration/ng_elements/src/elements.ts
@@ -2,7 +2,7 @@ import {Component, Input, ViewEncapsulation} from '@angular/core';
@Component({
selector: 'hello-world-el',
- template: `Hello {{name}}!`,
+ template: 'Hello {{name}}!',
})
export class HelloWorldComponent {
@Input() name: string = 'World';
@@ -10,14 +10,13 @@ export class HelloWorldComponent {
@Component({
selector: 'hello-world-shadow-el',
- template: `Hello {{name}}!`,
- encapsulation: ViewEncapsulation.ShadowDom
+ template: 'Hello {{name}}!',
+ encapsulation: ViewEncapsulation.ShadowDom,
})
export class HelloWorldShadowComponent {
@Input() name: string = 'World';
}
-
@Component({
selector: 'test-card',
template: `
@@ -29,7 +28,6 @@ export class HelloWorldShadowComponent {