Try to make smoke tests more stable (#15212)

* make sure dialog buttons are not disabled

* use 'enter' to close connect dialog

* retry clikcing the Connect button

* wait for dialog gone after reclicking

* pr comments + add logging

* use debug to log

* close toasts before clicking dialog buttons

* await close notification toast call

* click python wizard buttons instead of enter
This commit is contained in:
Lucy Zhang
2021-04-27 16:53:17 -04:00
committed by GitHub
parent c66a8ca171
commit 7e1c0076ba
6 changed files with 61 additions and 9 deletions

View File

@@ -5,12 +5,13 @@
import { Code } from '../code';
import { Dialog } from './dialog';
import { NotificationToast } from './notificationToast';
const CONFIGURE_PYTHON_DIALOG_TITLE = 'Configure Python to run Python 3 kernel';
export class ConfigurePythonDialog extends Dialog {
constructor(code: Code) {
constructor(code: Code, private notificationToast: NotificationToast) {
super(CONFIGURE_PYTHON_DIALOG_TITLE, code);
}
@@ -25,13 +26,23 @@ export class ConfigurePythonDialog extends Dialog {
const newPythonInstallation = '.modal .modal-body input[aria-label="New Python installation"]';
await this.code.waitAndClick(newPythonInstallation);
// Wait for the python install location to be loaded before clicking the next button.
// There may be a timing issue where the smoke test attempts to go to the next page before
// the contents are loaded, causing the test to fail.
const pythonInstallLocationDropdownValue = `${dialog} select[aria-label="Python Install Location"] option`;
await this.code.waitForElement(pythonInstallLocationDropdownValue);
await this.notificationToast.closeNotificationToasts();
const nextButton = '.modal-dialog .modal-content .modal-footer .right-footer .footer-button a[aria-label="Next"][aria-disabled="false"]';
await this.code.waitForElement(nextButton);
await this.code.dispatchKeybinding('enter');
await this.code.waitAndClick(dialog);
await this.code.waitAndClick(nextButton);
await this.notificationToast.closeNotificationToasts();
const installButton = '.modal-dialog .modal-content .modal-footer .right-footer .footer-button a[aria-label="Install"][aria-disabled="false"]';
await this.code.waitForElement(installButton);
await this.code.dispatchKeybinding('enter');
await this.code.waitAndClick(dialog);
await this.code.waitAndClick(installButton);
await this.waitForDialogGone();
return this._waitForInstallationComplete();