Commit fa321829 authored by Scott Chen's avatar Scott Chen Committed by Commit Bot

Nux Onboarding: add browser tests for welcome-app

Bug: 881937
Change-Id: Iac86251f6f6d7bba501b2add3260579d2f2ba53b
Reviewed-on: https://chromium-review.googlesource.com/c/1327569
Commit-Queue: Scott Chen <scottchen@chromium.org>
Reviewed-by: default avatarDemetrios Papadopoulos <dpapad@chromium.org>
Cr-Commit-Position: refs/heads/master@{#607006}
parent dfbcc8a5
......@@ -35,8 +35,8 @@ Polymer({
/** @private {?welcome.Routes} */
currentRoute_: null,
/** @private {!PromiseResolver} */
defaultCheckPromise_: new PromiseResolver(),
/** @private {?PromiseResolver} */
defaultCheckPromise_: null,
/** @private {NuxOnboardingModules} */
modules_: {
......@@ -55,6 +55,8 @@ Polymer({
/** @override */
ready: function() {
this.defaultCheckPromise_ = new PromiseResolver();
/** @param {!nux.DefaultBrowserInfo} status */
const defaultCheckCallback = status => {
if (status.isDefault || !status.canBeDefault) {
......
// Copyright 2018 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
module.exports = {
'rules': {
'no-var': 'error',
'no-restricted-properties': [
'error',
{
'object': 'MockInteractions',
'property': 'tap',
'message': 'Do not use on-tap handlers in prod code, and use the ' +
'native click() method in tests. See more context at ' +
'crbug.com/812035.',
},
]
},
};
......@@ -52,3 +52,24 @@ OnboardingWelcomeEmailChooserTest = class extends OnboardingWelcomeBrowserTest {
TEST_F('OnboardingWelcomeEmailChooserTest', 'All', function() {
mocha.run();
});
OnboardingWelcomeWelcomeAppTest = class extends OnboardingWelcomeBrowserTest {
/** @override */
get browsePreload() {
return 'chrome://welcome/welcome_app.html';
}
/** @override */
get extraLibraries() {
return super.extraLibraries.concat([
'../settings/test_util.js',
'welcome_app_test.js',
'test_welcome_browser_proxy.js',
'test_nux_set_as_default_proxy.js',
]);
}
};
TEST_F('OnboardingWelcomeWelcomeAppTest', 'All', function() {
mocha.run();
});
// Copyright 2018 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
/** @implements {nux.NuxSetAsDefaultProxy} */
class TestNuxSetAsDefaultProxy extends TestBrowserProxy {
constructor() {
super([
'requestDefaultBrowserState',
'setAsDefault',
]);
this.defaultStatus_ = {};
}
/** @override */
requestDefaultBrowserState() {
cr.webUIListenerCallback(
'browser-default-state-changed', this.defaultStatus_);
this.methodCalled('requestDefaultBrowserState');
}
/** @override */
setAsDefault() {
this.methodCalled('setAsDefault');
}
/** @param {!nux.DefaultBrowserInfo} status */
setDefaultStatus(status) {
this.defaultStatus_ = status;
}
}
// Copyright 2018 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
/** @implements {welcome.WelcomeBrowserProxy} */
class TestWelcomeBrowserProxy extends TestBrowserProxy {
constructor() {
super([
'handleActivateSignIn',
'goToNewTabPage',
'goToURL',
]);
}
/** @override */
handleActivateSignIn() {
this.methodCalled('handleActivateSignIn');
}
/** @override */
goToNewTabPage() {
this.methodCalled('goToNewTabPage');
}
/** @override */
goToURL() {
this.methodCalled('goToURL');
}
}
// Copyright 2018 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
cr.define('onboarding_welcome_app_test', function() {
suite('WelcomeAppTest', function() {
/** @type {WelcomeAppElement} */
let testElement;
/** @type {welcome.WelcomeBrowserProxy} */
let testWelcomeBrowserProxy;
/** @type {nux.NuxSetAsDefaultProxy} */
let testSetAsDefaultProxy;
function resetTestElement() {
PolymerTest.clearBody();
welcome.navigateTo(welcome.Routes.LANDING, 'landing');
testElement = document.createElement('welcome-app');
document.body.appendChild(testElement);
}
function simulateCanSetDefault() {
testSetAsDefaultProxy.setDefaultStatus({
isDefault: false,
canBeDefault: true,
isDisabledByPolicy: false,
isUnknownError: false,
});
resetTestElement();
}
function simulateCannotSetDefault() {
testSetAsDefaultProxy.setDefaultStatus({
isDefault: true,
canBeDefault: true,
isDisabledByPolicy: false,
isUnknownError: false,
});
resetTestElement();
}
setup(function() {
testWelcomeBrowserProxy = new TestWelcomeBrowserProxy();
welcome.WelcomeBrowserProxyImpl.instance_ = testWelcomeBrowserProxy;
testSetAsDefaultProxy = new TestNuxSetAsDefaultProxy();
nux.NuxSetAsDefaultProxyImpl.instance_ = testSetAsDefaultProxy;
resetTestElement();
});
teardown(function() {
testElement.remove();
});
test('shows landing page by default', function() {
assertEquals(
testElement.shadowRoot.querySelectorAll('[slot=view]').length, 1);
assertTrue(!!testElement.$$('landing-view'));
assertTrue(testElement.$$('landing-view').classList.contains('active'));
});
test('new user route (can set default)', function() {
simulateCanSetDefault();
welcome.navigateTo(welcome.Routes.NEW_USER, 1);
return test_util.waitForRender(testElement).then(() => {
const views = testElement.shadowRoot.querySelectorAll('[slot=view]');
assertEquals(views.length, 5);
assertEquals(views[0].tagName, 'LANDING-VIEW');
assertEquals(views[1].tagName, 'NUX-EMAIL');
assertEquals(views[2].tagName, 'NUX-GOOGLE-APPS');
assertEquals(views[3].tagName, 'NUX-SET-AS-DEFAULT');
assertEquals(views[4].tagName, 'SIGNIN-VIEW');
});
});
test('new user route (canot set default)', function() {
simulateCannotSetDefault();
welcome.navigateTo(welcome.Routes.NEW_USER, 1);
return test_util.waitForRender(testElement).then(() => {
const views = testElement.shadowRoot.querySelectorAll('[slot=view]');
assertEquals(views.length, 4);
assertEquals(views[0].tagName, 'LANDING-VIEW');
assertEquals(views[1].tagName, 'NUX-EMAIL');
assertEquals(views[2].tagName, 'NUX-GOOGLE-APPS');
assertEquals(views[3].tagName, 'SIGNIN-VIEW');
});
});
test('returning user route (can set default)', function() {
simulateCanSetDefault();
welcome.navigateTo(welcome.Routes.RETURNING_USER, 1);
return test_util.waitForRender(testElement).then(() => {
const views = testElement.shadowRoot.querySelectorAll('[slot=view]');
assertEquals(views.length, 2);
assertEquals(views[0].tagName, 'LANDING-VIEW');
assertEquals(views[1].tagName, 'NUX-SET-AS-DEFAULT');
});
});
test('returning user route (cannot set default)', function() {
simulateCannotSetDefault();
welcome.navigateTo(welcome.Routes.RETURNING_USER, 1);
// At this point, there should be no steps in the returning user, so
// welcome_app should try to go to NTP.
return testWelcomeBrowserProxy.whenCalled('goToNewTabPage');
});
});
});
......@@ -242,6 +242,7 @@ NetInternalsTest.*
NoBackgroundTasksTest.*
NTP4WebUITest.*
OnboardingWelcomeEmailChooserTest.*
OnboardingWelcomeWelcomeAppTest.*
OpenAudioFiles/*
PasswordsAndFormsBrowserTest.*
PrintPreviewAdvancedDialogTest.*
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment