Commit 3f1b0a5f authored by Joel Hockey's avatar Joel Hockey Committed by Commit Bot

Split Files UI Test for crostini/PluginVm Share

Split slow test into 3 to hopefully avoid timeouts.

Bug: 1135410
Change-Id: I4612e8b13740665bdf994ef17d7dc2fb4ab623d7
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2450139
Commit-Queue: Fergus Dall <sidereal@google.com>
Reviewed-by: default avatarFergus Dall <sidereal@google.com>
Cr-Commit-Position: refs/heads/master@{#814485}
parent b636ef0a
......@@ -67,11 +67,18 @@ IN_PROC_BROWSER_TEST_F(FileManagerUITest, CrostiniMount) {
RunTest("crostiniMount");
}
// TODO(crbug.com/1135410) Renable this once it won't timeout.
IN_PROC_BROWSER_TEST_F(FileManagerUITest, DISABLED_CrostiniShare) {
IN_PROC_BROWSER_TEST_F(FileManagerUITest, CrostiniShare) {
RunTest("crostiniShare");
}
IN_PROC_BROWSER_TEST_F(FileManagerUITest, CrostiniShareManage) {
RunTest("crostiniShareManage");
}
IN_PROC_BROWSER_TEST_F(FileManagerUITest, CrostiniShareVolumes) {
RunTest("crostiniShareVolumes");
}
IN_PROC_BROWSER_TEST_F(FileManagerUITest, CrostiniTasks) {
RunTest("crostiniTasks");
}
......@@ -84,9 +91,16 @@ IN_PROC_BROWSER_TEST_F(FileManagerUITest, PluginVm) {
RunTest("pluginVm");
}
// TODO(crbug.com/1135410) Renable this once it won't timeout.
IN_PROC_BROWSER_TEST_F(FileManagerUITest, DISABLED_PluginVmShare) {
IN_PROC_BROWSER_TEST_F(FileManagerUITest, PluginVmShare) {
RunTest("pluginVmShare");
}
IN_PROC_BROWSER_TEST_F(FileManagerUITest, PluginVmShareManage) {
RunTest("pluginVmShareManage");
}
IN_PROC_BROWSER_TEST_F(FileManagerUITest, PluginVmShareVolumes) {
RunTest("pluginVmShareVolumes");
}
} // namespace file_manager
......@@ -19,9 +19,6 @@ const shareBase = {
enumUmaManagePluginVmSharing: 17,
};
const crostiniShare = {};
const pluginVmShare = {};
// Right click clickTarget, ensure menuVisible is shown,
// Click menuTarget, ensure dialog is shown with expectedText.
shareBase.verifyShareWithDialog =
......@@ -61,20 +58,11 @@ shareBase.testSharePaths = async (
const shareWith = '#file-context-menu [command="#' + share + '"]';
const menuShareWithDirTree = '#directory-tree-context-menu:not([hidden]) ' +
'[command="#' + share + '"]:not([hidden]):not([disabled])';
const menuNoShareWithDirTree = '#directory-tree-context-menu:not([hidden]) ' +
'[command="#' + share + '"][hidden][disabled="disabled"]';
const shareWithDirTree =
'#directory-tree-context-menu [command="#' + share + '"]';
const photos = '#file-list [file-name="photos"]';
const myFilesDirTree = '#directory-tree [root-type-icon="my_files"]';
const removableRoot = '#directory-tree [volume-type-icon="removable"]';
const menuShareWithVolumeRoot = '#roots-context-menu:not([hidden]) ' +
'[command="#' + share + '"]:not([hidden]):not([disabled])';
const shareWithVolumeRoot = '#roots-context-menu [command="#' + share + '"]';
const fakeLinuxFiles = '#directory-tree [root-type-icon="crostini"]';
const googleDrive = '#directory-tree .tree-item [volume-type-icon="drive"]';
const menuHidden = '#file-context-menu[hidden]';
const androidRoot = '#directory-tree [volume-type-icon="android_files"]';
const shareLabel = {
'termina': 'Linux apps',
'PvmDefault': 'Parallels Desktop'
......@@ -188,6 +176,104 @@ shareBase.testSharePaths = async (
'right-click hello.txt');
await test.waitForElement(menuNoShareWith);
// Restore fmp.*.
chrome.fileManagerPrivate.sharePathsWithCrostini = oldSharePaths;
// Restore Crostini.unregisterSharedPath.
fileManager.crostini.unregisterSharedPath = oldCrostiniUnregister;
done();
};
const createMockFilesAppToast = () => {
const toast = document.querySelector('#toast');
if (!toast.shadowRoot) {
toast.attachShadow({mode: 'open'});
}
toast.shadowRoot.innerHTML = `
<div class="container" id="container" hidden>
<div class="text" id="text" hidden></div>
<cr-button class="action" id="action" hidden></cr-button>
</div>
`;
toast.visible = false;
toast.show = (message, action) => {
const host = document.querySelector('#toast');
if (typeof message === 'string') {
const text = host.shadowRoot.querySelector('#text');
text.innerText = message;
text.hidden = false;
} else {
assertTrue(false, 'Invalid <files-toast> message');
return;
}
if (action && action.text && action.callback) {
const button = host.shadowRoot.querySelector('#action');
button.innerText = action.text;
button.hidden = false;
} else {
assertTrue(false, 'Invalid <files-toast> action');
return;
}
console.log('Toasted ' + message);
const container = host.shadowRoot.querySelector('#container');
container.hidden = false;
host.visible = true;
};
};
const crostiniShare = {};
const pluginVmShare = {};
crostiniShare.testSharePaths = done => {
createMockFilesAppToast();
shareBase.testSharePaths(
shareBase.vmNameTermina, shareBase.vmNameSelectorLinux,
shareBase.toastSharedTextLinux, shareBase.toastActionTextLinux,
shareBase.enumUmaShareWithLinux, done);
};
pluginVmShare.testSharePaths = done => {
createMockFilesAppToast();
shareBase.testSharePaths(
shareBase.vmNamePluginVm, shareBase.vmNameSelectorPluginVm,
shareBase.toastSharedTextPluginVm, shareBase.toastActionTextPluginVm,
shareBase.enumUmaShareWithPluginVm, done);
};
// Verify share for other volumes.
shareBase.testShareVolumes = async (vmName, vmNameSelector, done) => {
const share = 'share-with-' + vmNameSelector;
const manage = 'manage-' + vmNameSelector + '-sharing';
const menuNoShareWith = '#file-context-menu:not([hidden]) ' +
'[command="#' + share + '"][hidden][disabled="disabled"]';
const menuShareWith = '#file-context-menu:not([hidden]) ' +
'[command="#' + share + '"]:not([hidden]):not([disabled])';
const removableRoot = '#directory-tree [volume-type-icon="removable"]';
const menuShareWithVolumeRoot = '#roots-context-menu:not([hidden]) ' +
'[command="#' + share + '"]:not([hidden]):not([disabled])';
const menuNoShareWithDirTree = '#directory-tree-context-menu:not([hidden]) ' +
'[command="#' + share + '"][hidden][disabled="disabled"]';
const shareWithVolumeRoot = '#roots-context-menu [command="#' + share + '"]';
const fakeLinuxFiles = '#directory-tree [root-type-icon="crostini"]';
const googleDrive = '#directory-tree .tree-item [volume-type-icon="drive"]';
const photos = '#file-list [file-name="photos"]';
const androidRoot = '#directory-tree [volume-type-icon="android_files"]';
const shareLabel = {
'termina': 'Linux apps',
'PvmDefault': 'Parallels Desktop'
};
const givePermission = `Give ${shareLabel[vmName]} permission to modify `;
chrome.fileManagerPrivate.mountCrostiniDelay_ = 0;
await test.setupAndWaitUntilReady();
// Verify share for removable root.
test.mountRemovable();
await test.waitForElement(removableRoot);
......@@ -249,74 +335,23 @@ shareBase.testSharePaths = async (
await test.waitForElement(menuShareWith);
// Reset Linux files and Play files back to unmounted.
chrome.fileManagerPrivate.removeMount('android_files');
chrome.fileManagerPrivate.removeMount('crostini');
await test.waitForElement(fakeLinuxFiles);
chrome.fileManagerPrivate.removeMount('android_files');
// Restore fmp.*.
chrome.fileManagerPrivate.sharePathsWithCrostini = oldSharePaths;
// Restore Crostini.unregisterSharedPath.
fileManager.crostini.unregisterSharedPath = oldCrostiniUnregister;
done();
};
const createMockFilesAppToast = () => {
const toast = document.querySelector('#toast');
if (!toast.shadowRoot) {
toast.attachShadow({mode: 'open'});
}
toast.shadowRoot.innerHTML = `
<div class="container" id="container" hidden>
<div class="text" id="text" hidden></div>
<cr-button class="action" id="action" hidden></cr-button>
</div>
`;
toast.visible = false;
toast.show = (message, action) => {
const host = document.querySelector('#toast');
if (typeof message === 'string') {
const text = host.shadowRoot.querySelector('#text');
text.innerText = message;
text.hidden = false;
} else {
assertTrue(false, 'Invalid <files-toast> message');
return;
}
if (action && action.text && action.callback) {
const button = host.shadowRoot.querySelector('#action');
button.innerText = action.text;
button.hidden = false;
} else {
assertTrue(false, 'Invalid <files-toast> action');
return;
}
const crostiniShareVolumes = {};
const pluginVmShareVolumes = {};
console.log('Toasted ' + message);
const container = host.shadowRoot.querySelector('#container');
container.hidden = false;
host.visible = true;
};
crostiniShareVolumes.testShareVolumes = done => {
shareBase.testShareVolumes(
shareBase.vmNameTermina, shareBase.vmNameSelectorLinux, done);
};
crostiniShare.testSharePaths = done => {
createMockFilesAppToast();
shareBase.testSharePaths(
shareBase.vmNameTermina, shareBase.vmNameSelectorLinux,
shareBase.toastSharedTextLinux, shareBase.toastActionTextLinux,
shareBase.enumUmaShareWithLinux, done);
};
pluginVmShare.testSharePaths = done => {
createMockFilesAppToast();
shareBase.testSharePaths(
shareBase.vmNamePluginVm, shareBase.vmNameSelectorPluginVm,
shareBase.toastSharedTextPluginVm, shareBase.toastActionTextPluginVm,
shareBase.enumUmaShareWithPluginVm, done);
pluginVmShareVolumes.testShareVolumes = done => {
shareBase.testShareVolumes(
shareBase.vmNamePluginVm, shareBase.vmNameSelectorPluginVm, done);
};
// Verify gear menu 'Manage ? sharing'.
......@@ -359,13 +394,16 @@ shareBase.testGearMenuManage =
done();
};
crostiniShare.testGearMenuManageLinuxSharing = done => {
const crostiniShareManage = {};
const pluginVmShareManage = {};
crostiniShareManage.testGearMenuManageLinuxSharing = done => {
shareBase.testGearMenuManage(
shareBase.vmNameTermina, shareBase.vmNameSelectorLinux,
shareBase.enumUmaManageLinuxSharing, done);
};
pluginVmShare.testGearMenuManagePluginVmSharing = done => {
pluginVmShareManage.testGearMenuManagePluginVmSharing = done => {
shareBase.testGearMenuManage(
shareBase.vmNamePluginVm, shareBase.vmNameSelectorPluginVm,
shareBase.enumUmaManagePluginVmSharing, done);
......
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