Skip to content

Commit

Permalink
fix Import Wizard flow
Browse files Browse the repository at this point in the history
  • Loading branch information
Radim Hrazdil committed Jun 15, 2020
1 parent 44dd118 commit d6d6b15
Show file tree
Hide file tree
Showing 3 changed files with 48 additions and 23 deletions.
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/* eslint-disable no-await-in-loop */
import { browser, ExpectedConditions as until } from 'protractor';
import { browser } from 'protractor';
import { createItemButton, isLoaded } from '@console/internal-integration-tests/views/crud.view';
import { click, fillInput, asyncForEach } from '@console/shared/src/test-utils/utils';
import { VirtualMachineModel } from '@console/kubevirt-plugin/src/models';
Expand All @@ -8,8 +8,6 @@ import { DiskDialog } from '../dialogs/diskDialog';
import { tableRows, saveButton } from '../../views/kubevirtUIResource.view';
import { selectOptionByText, setCheckboxState } from '../utils/utils';
import {
POD_CREATION_TIMEOUT_SECS,
V2V_INSTANCE_CONNECTION_TIMEOUT,
IMPORT_WIZARD_CONN_TO_NEW_INSTANCE,
networkTabCol,
STORAGE_CLASS,
Expand Down Expand Up @@ -88,6 +86,10 @@ export class ImportWizard extends Wizard {
await selectOptionByText(view.virtualMachineSelect, sourceVirtualMachine);
}

async confirmAndCreate() {
await click(view.importButon);
}

/**
* Edits attributes of a NICs that are being imported from source VM.
*/
Expand Down Expand Up @@ -157,15 +159,32 @@ export class ImportWizard extends Wizard {
await isLoaded();
}

async waitForVMWarePod() {
await browser.wait(until.invisibilityOf(view.vmwarePodStatusLoader), POD_CREATION_TIMEOUT_SECS);
}
/**
* Waits for loading icon on Import tab to disappear.
* As the icon disappears and re-appears several times when loading VM details
* we need to sample it's presence multiple times to make sure all data is loaded.
*/
async waitForSpinner() {
// TODO: In a followup, we should use this implementation of waitFor and
// deprecate the one we have in kubevirt-plugin/integration-tests/utils/utils.ts
// because this is more general
const waitFor = async (func, interval = 1500, count = 4) => {
let sequenceNumber = 0;
let res;
while (sequenceNumber !== count) {
res = await func();
if (res) {
sequenceNumber += 1;
} else {
sequenceNumber = 0;
}
await browser.sleep(interval);
}
};

async waitForInstanceSync() {
await browser.wait(
until.invisibilityOf(view.instanceConnectionStatus),
V2V_INSTANCE_CONNECTION_TIMEOUT,
);
await waitFor(async () => {
return !(await view.spinnerIcon.isPresent());
});
}

async import(config: VMImportConfig) {
Expand All @@ -187,14 +206,16 @@ export class ImportWizard extends Wizard {

// General section
await importWizard.selectProvider(provider);
await importWizard.waitForVMWarePod();
await importWizard.waitForSpinner();
await importWizard.configureInstance(instanceConfig);

await importWizard.connectToInstance();
await importWizard.waitForInstanceSync();
await importWizard.waitForSpinner();

await importWizard.selectSourceVirtualMachine(sourceVMName);
await importWizard.waitForInstanceSync();
await importWizard.waitForSpinner();

await importWizard.next(true);

if (operatingSystem) {
await importWizard.selectOperatingSystem(operatingSystem as string);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,16 +66,18 @@ export class Wizard {
.accept();
}

async next() {
async next(ignoreWarnings: boolean = false) {
await click(wizardView.nextButton);
try {
await browser.wait(until.presenceOf(wizardView.footerError), 1 * SEC);
} catch (e) {
// footerError wasn't displayed, everything is OK
return;
if (!ignoreWarnings) {
try {
await browser.wait(until.presenceOf(wizardView.footerError), 2 * SEC);
} catch (e) {
// footerError wasn't displayed, everything is OK
return;
}
// An error is displayed
throw new Error(await wizardView.footerErrorDescroption.getText());
}
// An error is displayed
throw new Error(await wizardView.footerErrorDescroption.getText());
}

async fillName(name: string) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,9 @@ export const connectInstanceButton = $('#provider-vmware-connect');
export const vmwarePodStatusLoader = $('#v2v-vmware-status-status');
export const virtualMachineSelect = $('#vcenter-vm-dropdown');

export const instanceConnectionStatus = $('fa-spin.co-icon-and-text__icon.co-icon-flex-child');
export const spinnerIcon = $('svg.fa-spin');
export const connectionWarning = $('h4.pf-c-alert__title');

export const seeDetailPageButton = element(by.buttonText('See virtual machine details'));

export const importButon = element(by.buttonText('Import'));

0 comments on commit d6d6b15

Please sign in to comment.