Commit fcc9a612 authored by Nicholas Hollingum's avatar Nicholas Hollingum Committed by Commit Bot

Split up and re-enable crostini settings tests

We split up the crostini tests so that each suite runs in a separate
test.

This requires factoring tests from SubPageDetails into a leaf suite
called "SubPageDefault".

We also re-enable all the tests except the Port Forwarding suite, which
we suspect is responsible for the flakes but we can not reproduce the
flakes locally.

Bug: 1056268
Change-Id: I8f4a6af5943845c67178e2fe3d9edde69fc9616f
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2124281Reviewed-by: default avatarNicholas Verne <nverne@chromium.org>
Reviewed-by: default avatarKyle Horimoto <khorimoto@chromium.org>
Commit-Queue: Nic Hollingum <hollingum@google.com>
Cr-Commit-Position: refs/heads/master@{#754794}
parent b5a223a5
...@@ -59,7 +59,7 @@ suite('CrostiniPageTests', function() { ...@@ -59,7 +59,7 @@ suite('CrostiniPageTests', function() {
}); });
} }
suite('Main Page', function() { suite('MainPage', function() {
setup(function() { setup(function() {
setCrostiniPrefs(false); setCrostiniPrefs(false);
}); });
...@@ -130,161 +130,218 @@ suite('CrostiniPageTests', function() { ...@@ -130,161 +130,218 @@ suite('CrostiniPageTests', function() {
await Promise.all([pageLoadPromise, eventPromise]); await Promise.all([pageLoadPromise, eventPromise]);
}); });
test('Sanity', function() { suite('SubPageDefault', function() {
assertTrue(!!subpage.$$('#crostini-shared-paths')); test('Sanity', function() {
assertTrue(!!subpage.$$('#crostini-shared-usb-devices')); assertTrue(!!subpage.$$('#crostini-shared-paths'));
assertTrue(!!subpage.$$('#crostini-export-import')); assertTrue(!!subpage.$$('#crostini-shared-usb-devices'));
assertTrue(!!subpage.$$('#remove')); assertTrue(!!subpage.$$('#crostini-export-import'));
assertTrue(!!subpage.$$('#container-upgrade')); assertTrue(!!subpage.$$('#remove'));
assertTrue(!!subpage.$$('#crostini-port-forwarding')); assertTrue(!!subpage.$$('#container-upgrade'));
assertTrue(!!subpage.$$('#crostini-mic-sharing')); assertTrue(!!subpage.$$('#crostini-port-forwarding'));
assertTrue(!!subpage.$$('#crostini-disk-resize')); assertTrue(!!subpage.$$('#crostini-mic-sharing'));
}); assertTrue(!!subpage.$$('#crostini-disk-resize'));
});
test('SharedPaths', async function() { test('SharedPaths', async function() {
assertTrue(!!subpage.$$('#crostini-shared-paths')); assertTrue(!!subpage.$$('#crostini-shared-paths'));
subpage.$$('#crostini-shared-paths').click(); subpage.$$('#crostini-shared-paths').click();
await flushAsync(); await flushAsync();
subpage = crostiniPage.$$('settings-crostini-shared-paths'); subpage = crostiniPage.$$('settings-crostini-shared-paths');
assertTrue(!!subpage); assertTrue(!!subpage);
}); });
test('ContainerUpgrade', function() { test('ContainerUpgrade', function() {
assertTrue(!!subpage.$$('#container-upgrade cr-button')); assertTrue(!!subpage.$$('#container-upgrade cr-button'));
subpage.$$('#container-upgrade cr-button').click(); subpage.$$('#container-upgrade cr-button').click();
assertEquals( assertEquals(
1, 1,
crostiniBrowserProxy.getCallCount( crostiniBrowserProxy.getCallCount(
'requestCrostiniContainerUpgradeView')); 'requestCrostiniContainerUpgradeView'));
}); });
test('ContainerUpgradeButtonDisabledOnUpgradeDialog', async function() { test('ContainerUpgradeButtonDisabledOnUpgradeDialog', async function() {
const button = subpage.$$('#container-upgrade cr-button'); const button = subpage.$$('#container-upgrade cr-button');
assertTrue(!!button); assertTrue(!!button);
await flushAsync(); await flushAsync();
assertFalse(button.disabled); assertFalse(button.disabled);
cr.webUIListenerCallback('crostini-upgrader-status-changed', true); cr.webUIListenerCallback('crostini-upgrader-status-changed', true);
await flushAsync(); await flushAsync();
assertTrue(button.disabled); assertTrue(button.disabled);
cr.webUIListenerCallback('crostini-upgrader-status-changed', false); cr.webUIListenerCallback('crostini-upgrader-status-changed', false);
await flushAsync(); await flushAsync();
assertFalse(button.disabled); assertFalse(button.disabled);
}); });
test('ContainerUpgradeButtonDisabledOnInstall', async function() { test('ContainerUpgradeButtonDisabledOnInstall', async function() {
const button = subpage.$$('#container-upgrade cr-button'); const button = subpage.$$('#container-upgrade cr-button');
assertTrue(!!button); assertTrue(!!button);
await flushAsync(); await flushAsync();
assertFalse(button.disabled); assertFalse(button.disabled);
cr.webUIListenerCallback('crostini-installer-status-changed', true); cr.webUIListenerCallback('crostini-installer-status-changed', true);
await flushAsync(); await flushAsync();
assertTrue(button.disabled); assertTrue(button.disabled);
cr.webUIListenerCallback('crostini-installer-status-changed', false); cr.webUIListenerCallback('crostini-installer-status-changed', false);
await flushAsync(); await flushAsync();
assertFalse(button.disabled); assertFalse(button.disabled);
}); });
test('Export', async function() { test('Export', async function() {
assertTrue(!!subpage.$$('#crostini-export-import')); assertTrue(!!subpage.$$('#crostini-export-import'));
subpage.$$('#crostini-export-import').click(); subpage.$$('#crostini-export-import').click();
await flushAsync(); await flushAsync();
subpage = crostiniPage.$$('settings-crostini-export-import'); subpage = crostiniPage.$$('settings-crostini-export-import');
assertTrue(!!subpage.$$('#export cr-button')); assertTrue(!!subpage.$$('#export cr-button'));
subpage.$$('#export cr-button').click(); subpage.$$('#export cr-button').click();
assertEquals( assertEquals(
1, crostiniBrowserProxy.getCallCount('exportCrostiniContainer')); 1, crostiniBrowserProxy.getCallCount('exportCrostiniContainer'));
}); });
test('Import', async function() { test('Import', async function() {
assertTrue(!!subpage.$$('#crostini-export-import')); assertTrue(!!subpage.$$('#crostini-export-import'));
subpage.$$('#crostini-export-import').click(); subpage.$$('#crostini-export-import').click();
await flushAsync(); await flushAsync();
subpage = crostiniPage.$$('settings-crostini-export-import'); subpage = crostiniPage.$$('settings-crostini-export-import');
subpage.$$('#import cr-button').click(); subpage.$$('#import cr-button').click();
await flushAsync(); await flushAsync();
subpage = subpage.$$('settings-crostini-import-confirmation-dialog'); subpage = subpage.$$('settings-crostini-import-confirmation-dialog');
subpage.$$('cr-dialog cr-button[id="continue"]').click(); subpage.$$('cr-dialog cr-button[id="continue"]').click();
assertEquals( assertEquals(
1, crostiniBrowserProxy.getCallCount('importCrostiniContainer')); 1, crostiniBrowserProxy.getCallCount('importCrostiniContainer'));
}); });
test('ExportImportButtonsGetDisabledOnOperationStatus', async function() { test('ExportImportButtonsGetDisabledOnOperationStatus', async function() {
assertTrue(!!subpage.$$('#crostini-export-import')); assertTrue(!!subpage.$$('#crostini-export-import'));
subpage.$$('#crostini-export-import').click(); subpage.$$('#crostini-export-import').click();
await flushAsync(); await flushAsync();
subpage = crostiniPage.$$('settings-crostini-export-import'); subpage = crostiniPage.$$('settings-crostini-export-import');
assertFalse(subpage.$$('#export cr-button').disabled); assertFalse(subpage.$$('#export cr-button').disabled);
assertFalse(subpage.$$('#import cr-button').disabled); assertFalse(subpage.$$('#import cr-button').disabled);
cr.webUIListenerCallback( cr.webUIListenerCallback(
'crostini-export-import-operation-status-changed', true); 'crostini-export-import-operation-status-changed', true);
await flushAsync(); await flushAsync();
subpage = crostiniPage.$$('settings-crostini-export-import'); subpage = crostiniPage.$$('settings-crostini-export-import');
assertTrue(subpage.$$('#export cr-button').disabled); assertTrue(subpage.$$('#export cr-button').disabled);
assertTrue(subpage.$$('#import cr-button').disabled); assertTrue(subpage.$$('#import cr-button').disabled);
cr.webUIListenerCallback( cr.webUIListenerCallback(
'crostini-export-import-operation-status-changed', false); 'crostini-export-import-operation-status-changed', false);
await flushAsync(); await flushAsync();
subpage = crostiniPage.$$('settings-crostini-export-import'); subpage = crostiniPage.$$('settings-crostini-export-import');
assertFalse(subpage.$$('#export cr-button').disabled); assertFalse(subpage.$$('#export cr-button').disabled);
assertFalse(subpage.$$('#import cr-button').disabled); assertFalse(subpage.$$('#import cr-button').disabled);
}); });
test( test(
'ExportImportButtonsDisabledOnWhenInstallingCrostini', 'ExportImportButtonsDisabledOnWhenInstallingCrostini',
async function() { async function() {
assertTrue(!!subpage.$$('#crostini-export-import')); assertTrue(!!subpage.$$('#crostini-export-import'));
subpage.$$('#crostini-export-import').click(); subpage.$$('#crostini-export-import').click();
await flushAsync(); await flushAsync();
subpage = crostiniPage.$$('settings-crostini-export-import'); subpage = crostiniPage.$$('settings-crostini-export-import');
assertFalse(subpage.$$('#export cr-button').disabled); assertFalse(subpage.$$('#export cr-button').disabled);
assertFalse(subpage.$$('#import cr-button').disabled); assertFalse(subpage.$$('#import cr-button').disabled);
cr.webUIListenerCallback('crostini-installer-status-changed', true); cr.webUIListenerCallback('crostini-installer-status-changed', true);
await flushAsync(); await flushAsync();
subpage = crostiniPage.$$('settings-crostini-export-import'); subpage = crostiniPage.$$('settings-crostini-export-import');
assertTrue(subpage.$$('#export cr-button').disabled); assertTrue(subpage.$$('#export cr-button').disabled);
assertTrue(subpage.$$('#import cr-button').disabled); assertTrue(subpage.$$('#import cr-button').disabled);
cr.webUIListenerCallback('crostini-installer-status-changed', false); cr.webUIListenerCallback(
'crostini-installer-status-changed', false);
await flushAsync();
subpage = crostiniPage.$$('settings-crostini-export-import'); await flushAsync();
assertFalse(subpage.$$('#export cr-button').disabled); subpage = crostiniPage.$$('settings-crostini-export-import');
assertFalse(subpage.$$('#import cr-button').disabled); assertFalse(subpage.$$('#export cr-button').disabled);
}); assertFalse(subpage.$$('#import cr-button').disabled);
});
test('ToggleCrostiniMicSharing', async function() {
assertTrue(!!subpage.$$('#crostini-mic-sharing'));
assertFalse(!!subpage.$$('settings-crostini-mic-sharing-dialog'));
setCrostiniPrefs(true, {micSharing: true});
assertTrue(subpage.$$('#crostini-mic-sharing').checked);
assertTrue(subpage.$$('#crostini-mic-sharing').pref.value);
subpage.$$('#crostini-mic-sharing').click();
await flushAsync();
assertTrue(!!subpage.$$('settings-crostini-mic-sharing-dialog'));
const dialog = subpage.$$('settings-crostini-mic-sharing-dialog');
dialog.$$('cr-dialog cr-button').click();
await flushAsync();
assertFalse(subpage.$$('#crostini-mic-sharing').checked);
assertFalse(subpage.$$('#crostini-mic-sharing').pref.value);
test('ToggleCrostiniMicSharing', async function() { subpage.$$('#crostini-mic-sharing').click();
assertTrue(!!subpage.$$('#crostini-mic-sharing')); assertTrue(subpage.$$('#crostini-mic-sharing').checked);
assertFalse(!!subpage.$$('settings-crostini-mic-sharing-dialog')); assertTrue(subpage.$$('#crostini-mic-sharing').pref.value);
setCrostiniPrefs(true, {micSharing: true}); });
assertTrue(subpage.$$('#crostini-mic-sharing').checked);
assertTrue(subpage.$$('#crostini-mic-sharing').pref.value);
subpage.$$('#crostini-mic-sharing').click(); test('Remove', async function() {
await flushAsync(); assertTrue(!!subpage.$$('#remove cr-button'));
assertTrue(!!subpage.$$('settings-crostini-mic-sharing-dialog')); subpage.$$('#remove cr-button').click();
const dialog = subpage.$$('settings-crostini-mic-sharing-dialog'); assertEquals(
dialog.$$('cr-dialog cr-button').click(); 1, crostiniBrowserProxy.getCallCount('requestRemoveCrostini'));
await flushAsync(); setCrostiniPrefs(false);
assertFalse(subpage.$$('#crostini-mic-sharing').checked);
assertFalse(subpage.$$('#crostini-mic-sharing').pref.value); await test_util.eventToPromise('popstate', window);
assertEquals(
settings.Router.getInstance().getCurrentRoute(),
settings.routes.CROSTINI);
assertTrue(!!crostiniPage.$$('#enable'));
});
test('RemoveHidden', async function() {
// Elements are not destroyed when a dom-if stops being shown, but we
// can check if their rendered width is non-zero. This should be
// resilient against most formatting changes, since we're not relying on
// them having any exact size, or on Polymer using any particular means
// of hiding elements.
assertTrue(!!subpage.shadowRoot.querySelector('#remove').clientWidth);
cr.webUIListenerCallback('crostini-installer-status-changed', true);
await flushAsync();
assertFalse(!!subpage.shadowRoot.querySelector('#remove').clientWidth);
cr.webUIListenerCallback('crostini-installer-status-changed', false);
await flushAsync();
assertTrue(!!subpage.shadowRoot.querySelector('#remove').clientWidth);
});
test('HideOnDisable', async function() {
assertEquals(
settings.Router.getInstance().getCurrentRoute(),
settings.routes.CROSTINI_DETAILS);
setCrostiniPrefs(false);
await test_util.eventToPromise('popstate', window);
assertEquals(
settings.Router.getInstance().getCurrentRoute(),
settings.routes.CROSTINI);
});
test('DiskResizeOpensWhenClicked', async function() {
assertTrue(!!subpage.$$('#showDiskResizeButton'));
subpage.$$('#showDiskResizeButton').click();
subpage.$$('#crostini-mic-sharing').click(); await flushAsync();
assertTrue(subpage.$$('#crostini-mic-sharing').checked); const dialog = subpage.$$('settings-crostini-disk-resize-dialog');
assertTrue(subpage.$$('#crostini-mic-sharing').pref.value); assertTrue(!!dialog);
assertEquals(
1, crostiniBrowserProxy.getCallCount('getCrostiniDiskInfo'));
});
}); });
suite('SubPagePortForwarding', function() { suite('SubPagePortForwarding', function() {
...@@ -379,59 +436,6 @@ suite('CrostiniPageTests', function() { ...@@ -379,59 +436,6 @@ suite('CrostiniPageTests', function() {
}); });
}); });
test('Remove', async function() {
assertTrue(!!subpage.$$('#remove cr-button'));
subpage.$$('#remove cr-button').click();
assertEquals(
1, crostiniBrowserProxy.getCallCount('requestRemoveCrostini'));
setCrostiniPrefs(false);
await test_util.eventToPromise('popstate', window);
assertEquals(
settings.Router.getInstance().getCurrentRoute(),
settings.routes.CROSTINI);
assertTrue(!!crostiniPage.$$('#enable'));
});
test('RemoveHidden', async function() {
// Elements are not destroyed when a dom-if stops being shown, but we
// can check if their rendered width is non-zero. This should be
// resilient against most formatting changes, since we're not relying on
// them having any exact size, or on Polymer using any particular means
// of hiding elements.
assertTrue(!!subpage.shadowRoot.querySelector('#remove').clientWidth);
cr.webUIListenerCallback('crostini-installer-status-changed', true);
await flushAsync();
assertFalse(!!subpage.shadowRoot.querySelector('#remove').clientWidth);
cr.webUIListenerCallback('crostini-installer-status-changed', false);
await flushAsync();
assertTrue(!!subpage.shadowRoot.querySelector('#remove').clientWidth);
});
test('HideOnDisable', async function() {
assertEquals(
settings.Router.getInstance().getCurrentRoute(),
settings.routes.CROSTINI_DETAILS);
setCrostiniPrefs(false);
await test_util.eventToPromise('popstate', window);
assertEquals(
settings.Router.getInstance().getCurrentRoute(),
settings.routes.CROSTINI);
});
test('DiskResizeOpensWhenClicked', async function() {
assertTrue(!!subpage.$$('#showDiskResizeButton'));
subpage.$$('#showDiskResizeButton').click();
await flushAsync();
const dialog = subpage.$$('settings-crostini-disk-resize-dialog');
assertTrue(!!dialog);
assertEquals(1, crostiniBrowserProxy.getCallCount('getCrostiniDiskInfo'));
});
suite('DiskResize', async function() { suite('DiskResize', async function() {
let dialog; let dialog;
/** /**
......
...@@ -482,9 +482,29 @@ var OSSettingsCrostiniPageTest = class extends OSSettingsBrowserTest { ...@@ -482,9 +482,29 @@ var OSSettingsCrostiniPageTest = class extends OSSettingsBrowserTest {
} }
}; };
// Disabled due to flakiness: https://crbug.com/1056268. TEST_F('OSSettingsCrostiniPageTest', 'MainPage', function() {
TEST_F('OSSettingsCrostiniPageTest', 'DISABLED_All', () => { mocha.grep('MainPage').run();
mocha.run(); });
TEST_F('OSSettingsCrostiniPageTest', 'SubPageDefault', function() {
mocha.grep('SubPageDefault').run();
});
TEST_F(
'OSSettingsCrostiniPageTest', 'DISABLED_SubPagePortForwarding', function() {
mocha.grep('SubPagePortForwarding').run();
});
TEST_F('OSSettingsCrostiniPageTest', 'DiskResize', function() {
mocha.grep('DiskResize').run();
});
TEST_F('OSSettingsCrostiniPageTest', 'SubPageSharedPaths', function() {
mocha.grep('SubPageSharedPaths').run();
});
TEST_F('OSSettingsCrostiniPageTest', 'SubPageSharedUsbDevices', function() {
mocha.grep('SubPageSharedUsbDevices').run();
}); });
// Test fixture for the Date and Time page. // Test fixture for the Date and Time page.
......
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