fix(ivy): WorkerAppModule should be an APP_ROOT (#28544)

PR Close #28544
This commit is contained in:
Marc Laval 2019-02-05 17:14:18 +01:00 committed by Matias Niemelä
parent e3032a0d17
commit 43081a01d8
6 changed files with 161 additions and 169 deletions

View File

@ -6,13 +6,11 @@
* found in the LICENSE file at https://angular.io/license * found in the LICENSE file at https://angular.io/license
*/ */
import {fixmeIvy} from '@angular/private/testing';
import {ExpectedConditions, browser, by, element, protractor} from 'protractor'; import {ExpectedConditions, browser, by, element, protractor} from 'protractor';
import {verifyNoBrowserErrors} from '../../../../e2e_util/e2e_util'; import {verifyNoBrowserErrors} from '../../../../e2e_util/e2e_util';
fixmeIvy('NullInjectorError: No provider for InjectionToken ROOT_CONTEXT_TOKEN!') describe('WebWorkers Input', function() {
.describe('WebWorkers Input', function() {
afterEach(() => { afterEach(() => {
verifyNoBrowserErrors(); verifyNoBrowserErrors();
browser.ignoreSynchronization = false; browser.ignoreSynchronization = false;
@ -65,8 +63,7 @@ fixmeIvy('NullInjectorError: No provider for InjectionToken ROOT_CONTEXT_TOKEN!'
() => { () => {
const elem = element(by.css(selector + ' h2')); const elem = element(by.css(selector + ' h2'));
browser.wait( browser.wait(
protractor.ExpectedConditions.textToBePresentInElement(elem, 'Input App'), protractor.ExpectedConditions.textToBePresentInElement(elem, 'Input App'), 5000);
5000);
}, },
() => { () => {
// jasmine will timeout if this gets called too many times // jasmine will timeout if this gets called too many times
@ -75,4 +72,4 @@ fixmeIvy('NullInjectorError: No provider for InjectionToken ROOT_CONTEXT_TOKEN!'
waitForBootstrap(); waitForBootstrap();
}); });
} }
}); });

View File

@ -11,7 +11,7 @@ import {ExpectedConditions, browser, by, element, protractor} from 'protractor';
import {verifyNoBrowserErrors} from '../../../../e2e_util/e2e_util'; import {verifyNoBrowserErrors} from '../../../../e2e_util/e2e_util';
fixmeIvy('NullInjectorError: No provider for InjectionToken ROOT_CONTEXT_TOKEN!') fixmeIvy('FW-1032: Ivy doesn\'t support injecting Renderer, the deprecated renderer V1')
.describe('WebWorkers Kitchen Sink', function() { .describe('WebWorkers Kitchen Sink', function() {
afterEach(() => { afterEach(() => {
verifyNoBrowserErrors(); verifyNoBrowserErrors();

View File

@ -6,15 +6,13 @@
* found in the LICENSE file at https://angular.io/license * found in the LICENSE file at https://angular.io/license
*/ */
import {fixmeIvy} from '@angular/private/testing';
import {ExpectedConditions, browser, by, element, protractor} from 'protractor'; import {ExpectedConditions, browser, by, element, protractor} from 'protractor';
import {verifyNoBrowserErrors} from '../../../../e2e_util/e2e_util'; import {verifyNoBrowserErrors} from '../../../../e2e_util/e2e_util';
const URL = '/'; const URL = '/';
fixmeIvy('NullInjectorError: No provider for InjectionToken ROOT_CONTEXT_TOKEN!') describe('MessageBroker', function() {
.describe('MessageBroker', function() {
afterEach(() => { afterEach(() => {
verifyNoBrowserErrors(); verifyNoBrowserErrors();
@ -43,7 +41,7 @@ fixmeIvy('NullInjectorError: No provider for InjectionToken ROOT_CONTEXT_TOKEN!'
browser.wait(ExpectedConditions.textToBePresentInElement(area, VALUE), 5000); browser.wait(ExpectedConditions.textToBePresentInElement(area, VALUE), 5000);
expect(area.getText()).toEqual(VALUE); expect(area.getText()).toEqual(VALUE);
}); });
}); });
function waitForBootstrap(): void { function waitForBootstrap(): void {
browser.wait(protractor.until.elementLocated(by.css('app h1')), 15000); browser.wait(protractor.until.elementLocated(by.css('app h1')), 15000);

View File

@ -6,13 +6,11 @@
* found in the LICENSE file at https://angular.io/license * found in the LICENSE file at https://angular.io/license
*/ */
import {fixmeIvy} from '@angular/private/testing';
import {browser, by, element, protractor} from 'protractor'; import {browser, by, element, protractor} from 'protractor';
import {verifyNoBrowserErrors} from '../../../../e2e_util/e2e_util'; import {verifyNoBrowserErrors} from '../../../../e2e_util/e2e_util';
fixmeIvy('NullInjectorError: No provider for InjectionToken ROOT_CONTEXT_TOKEN!') describe('WebWorker Router', () => {
.describe('WebWorker Router', () => {
beforeEach(() => { beforeEach(() => {
// This test can't wait for Angular as Testability is not available when using WebWorker // This test can't wait for Angular as Testability is not available when using WebWorker
browser.ignoreSynchronization = true; browser.ignoreSynchronization = true;
@ -84,4 +82,4 @@ fixmeIvy('NullInjectorError: No provider for InjectionToken ROOT_CONTEXT_TOKEN!'
return deferred.promise; return deferred.promise;
}, 5000); }, 5000);
} }
}); });

View File

@ -6,13 +6,11 @@
* found in the LICENSE file at https://angular.io/license * found in the LICENSE file at https://angular.io/license
*/ */
import {fixmeIvy} from '@angular/private/testing';
import {browser, by, element, protractor} from 'protractor'; import {browser, by, element, protractor} from 'protractor';
import {verifyNoBrowserErrors} from '../../../../e2e_util/e2e_util'; import {verifyNoBrowserErrors} from '../../../../e2e_util/e2e_util';
fixmeIvy('NullInjectorError: No provider for InjectionToken ROOT_CONTEXT_TOKEN!') describe('WebWorkers Todo', function() {
.describe('WebWorkers Todo', function() {
afterEach(() => { afterEach(() => {
verifyNoBrowserErrors(); verifyNoBrowserErrors();
browser.ignoreSynchronization = false; browser.ignoreSynchronization = false;
@ -29,7 +27,7 @@ fixmeIvy('NullInjectorError: No provider for InjectionToken ROOT_CONTEXT_TOKEN!'
expect(element(by.css('#todoapp header')).getText()).toEqual('todos'); expect(element(by.css('#todoapp header')).getText()).toEqual('todos');
}); });
}); });
function waitForBootstrap(): void { function waitForBootstrap(): void {
browser.wait(protractor.until.elementLocated(by.css('todo-app #todoapp')), 15000); browser.wait(protractor.until.elementLocated(by.css('todo-app #todoapp')), 15000);

View File

@ -7,7 +7,7 @@
*/ */
import {CommonModule, ViewportScroller, ɵNullViewportScroller as NullViewportScroller, ɵPLATFORM_WORKER_APP_ID as PLATFORM_WORKER_APP_ID} from '@angular/common'; import {CommonModule, ViewportScroller, ɵNullViewportScroller as NullViewportScroller, ɵPLATFORM_WORKER_APP_ID as PLATFORM_WORKER_APP_ID} from '@angular/common';
import {APP_INITIALIZER, ApplicationModule, ErrorHandler, NgModule, NgZone, PLATFORM_ID, PlatformRef, RendererFactory2, RootRenderer, StaticProvider, createPlatformFactory, platformCore} from '@angular/core'; import {APP_INITIALIZER, ApplicationModule, ErrorHandler, NgModule, NgZone, PLATFORM_ID, PlatformRef, RendererFactory2, RootRenderer, StaticProvider, createPlatformFactory, platformCore, ɵAPP_ROOT as APP_ROOT} from '@angular/core';
import {DOCUMENT, ɵBROWSER_SANITIZATION_PROVIDERS as BROWSER_SANITIZATION_PROVIDERS} from '@angular/platform-browser'; import {DOCUMENT, ɵBROWSER_SANITIZATION_PROVIDERS as BROWSER_SANITIZATION_PROVIDERS} from '@angular/platform-browser';
import {ON_WEB_WORKER} from './web_workers/shared/api'; import {ON_WEB_WORKER} from './web_workers/shared/api';
@ -60,6 +60,7 @@ export function setupWebWorker(): void {
@NgModule({ @NgModule({
providers: [ providers: [
BROWSER_SANITIZATION_PROVIDERS, BROWSER_SANITIZATION_PROVIDERS,
{provide: APP_ROOT, useValue: true},
Serializer, Serializer,
{provide: DOCUMENT, useValue: null}, {provide: DOCUMENT, useValue: null},
ClientMessageBrokerFactory, ClientMessageBrokerFactory,