Fix timeout in waitDisappearance method calls in DexLoginPage; fix PR check#23705
Merged
dmytro-ndp merged 7 commits intomainfrom Jan 11, 2026
Merged
Fix timeout in waitDisappearance method calls in DexLoginPage; fix PR check#23705dmytro-ndp merged 7 commits intomainfrom
dmytro-ndp merged 7 commits intomainfrom
Conversation
…se attempts and polling interval
Signed-off-by: Dmytro Nochevnov <dnochevn@redhat.com>
…tyWorkspace test Signed-off-by: Dmytro Nochevnov <dnochevn@redhat.com>
Signed-off-by: Dmytro Nochevnov <dnochevn@redhat.com>
Signed-off-by: Dmytro Nochevnov <dnochevn@redhat.com>
Signed-off-by: Dmytro Nochevnov <dnochevn@redhat.com>
Signed-off-by: Dmytro Nochevnov <dnochevn@redhat.com>
9 tasks
SkorikSergey
approved these changes
Jan 11, 2026
Contributor
SkorikSergey
left a comment
There was a problem hiding this comment.
Looks good to merge
dmytro-ndp
added a commit
that referenced
this pull request
Jan 29, 2026
… check (#23705) * Fix waitDisappearance method calls in Dashboard and DexLoginPage to use attempts and polling interval * Treat a 500 server error as normal when the workspace was deleted -- Assisted-by: Claude Code Signed-off-by: Dmytro Nochevnov <dnochevn@redhat.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What does this PR do?
It fixes incorrect wait timeout when run Smoke test with empty password value, like https://github.com/che-incubator/che-code/actions/runs/20744835965/job/59559776902
It also fixes PR check by treating a 500 server error as normal when the workspace was deleted.
Screenshot/screencast of this PR
What issues does this PR fix or reference?
#23701
How to test this PR?
Run smoke test in che-code repo with empty password value.
Fixed
EmptyWorkspacetest run against Eclipse Che deployed to the Kubernetes:Successful test run
‣ DriverHelper.getDriver Empty Workspace test ▼ LoginTests.loginIntoChe ‣ BrowserTabsUtil.getCurrentUrl ‣ DriverHelper.getDriver ▼ BrowserTabsUtil.navigateTo - https://192.168.39.155.nip.io ‣ DriverHelper.navigateToUrl ‣ DriverHelper.getDriver ▼ Dashboard.waitPage ‣ DriverHelper.waitVisibility - By(xpath, //div[@id="page-sidebar"]//a[contains(text(), "Workspaces (")]) ‣ DriverHelper.waitVisibility - polling timed out attempt #1, retrying with 2000ms timeout ‣ DriverHelper.waitVisibility - polling timed out attempt #2, retrying with 2000ms timeout ‣ DriverHelper.waitVisibility - polling timed out attempt #3, retrying with 2000ms timeout ‣ DriverHelper.waitVisibility - polling timed out attempt #4, retrying with 2000ms timeout [ERROR] DriverHelper.waitVisibility - failed with exception, out of attempts - TimeoutError: Waiting for element to be located By(xpath, //div[@id="page-sidebar"]//a[contains(text(), "Workspaces (")]) Wait timed out after 2140ms ▼ LoginTests.loginIntoChe - try to login into application ▼ KubernetesLoginPage.login ▼ DexLoginPage.waitDexLoginPage ‣ DriverHelper.waitVisibility - By(css selector, .dex-container) ‣ DriverHelper.waitVisibility - element is located and is visible. ▼ DexLoginPage.enterUserNameKubernetes ‣ DriverHelper.enterValue - By(css selector, *[id="login"]) text: che@eclipse.org ‣ DriverHelper.waitVisibility - By(css selector, *[id="login"]) ‣ DriverHelper.waitVisibility - element is located and is visible. ‣ DriverHelper.clear - By(css selector, *[id="login"]) ‣ DriverHelper.waitVisibility - By(css selector, *[id="login"]) ‣ DriverHelper.waitVisibility - element is located and is visible. ‣ DriverHelper.waitAttributeValue - By(css selector, *[id="login"]) ‣ DriverHelper.waitAndGetElementAttribute - By(css selector, *[id="login"]) attribute: 'value' ‣ DriverHelper.waitVisibility - By(css selector, *[id="login"]) ‣ DriverHelper.waitVisibility - element is located and is visible. ‣ DriverHelper.type - By(css selector, *[id="login"]) text: che@eclipse.org ‣ DriverHelper.waitVisibility - By(css selector, *[id="login"]) ‣ DriverHelper.waitVisibility - element is located and is visible. ‣ DriverHelper.waitAttributeValue - By(css selector, *[id="login"]) ‣ DriverHelper.waitAndGetElementAttribute - By(css selector, *[id="login"]) attribute: 'value' ‣ DriverHelper.waitVisibility - By(css selector, *[id="login"]) ‣ DriverHelper.waitVisibility - element is located and is visible. ▼ DexLoginPage.enterPasswordKubernetes ‣ DriverHelper.enterValue - By(css selector, *[id="password"]) text: *** ‣ DriverHelper.waitVisibility - By(css selector, *[id="password"]) ‣ DriverHelper.waitVisibility - element is located and is visible. ‣ DriverHelper.clear - By(css selector, *[id="password"]) ‣ DriverHelper.waitVisibility - By(css selector, *[id="password"]) ‣ DriverHelper.waitVisibility - element is located and is visible. ‣ DriverHelper.waitAttributeValue - By(css selector, *[id="password"]) ‣ DriverHelper.waitAndGetElementAttribute - By(css selector, *[id="password"]) attribute: 'value' ‣ DriverHelper.waitVisibility - By(css selector, *[id="password"]) ‣ DriverHelper.waitVisibility - element is located and is visible. ‣ DriverHelper.type - By(css selector, *[id="password"]) text: *** ‣ DriverHelper.waitVisibility - By(css selector, *[id="password"]) ‣ DriverHelper.waitVisibility - element is located and is visible. ‣ DriverHelper.waitAttributeValue - By(css selector, *[id="password"]) ‣ DriverHelper.waitAndGetElementAttribute - By(css selector, *[id="password"]) attribute: 'value' ‣ DriverHelper.waitVisibility - By(css selector, *[id="password"]) ‣ DriverHelper.waitVisibility - element is located and is visible. ▼ DexLoginPage.clickOnLoginButton ‣ DriverHelper.waitAndClick - By(css selector, *[id="submit-login"]) ‣ DriverHelper.waitVisibility - By(css selector, *[id="submit-login"]) ‣ DriverHelper.waitVisibility - element is located and is visible. ▼ DexLoginPage.waitDexLoginPageDisappearance ‣ DriverHelper.waitDisappearance - By(css selector, .dex-container) ‣ DriverHelper.waitDisappearanceBoolean - By(css selector, .dex-container) ‣ DriverHelper.isVisible - By(css selector, .dex-container) ‣ BrowserTabsUtil.maximize ▼ BrowserTabsUtil.maximize - TS_SELENIUM_LAUNCH_FULLSCREEN is set to true, maximizing window. ‣ DriverHelper.getDriver ▼ Dashboard.waitStartingPageLoaderDisappearance ‣ DriverHelper.waitDisappearance - By(css selector, .main-page-loader) ‣ DriverHelper.waitDisappearanceBoolean - By(css selector, .main-page-loader) ‣ DriverHelper.isVisible - By(css selector, .main-page-loader) ‣ DriverHelper.wait - (2000 milliseconds) ‣ DriverHelper.isVisible - By(css selector, .main-page-loader) ‣ DriverHelper.wait - (2000 milliseconds) ▼ Dashboard.clickWorkspacesButton ‣ DriverHelper.waitAndClick - By(xpath, //div[@id="page-sidebar"]//a[contains(text(), "Workspaces (")]) ‣ DriverHelper.waitVisibility - By(xpath, //div[@id="page-sidebar"]//a[contains(text(), "Workspaces (")]) ‣ DriverHelper.waitVisibility - element is located and is visible. ▼ Dashboard.waitPage ‣ DriverHelper.waitVisibility - By(xpath, //div[@id="page-sidebar"]//a[contains(text(), "Workspaces (")]) ‣ DriverHelper.waitVisibility - element is located and is visible. ‣ DriverHelper.waitVisibility - By(xpath, //div[@id="page-sidebar"]//a[text()="Create Workspace"]) ‣ DriverHelper.waitVisibility - element is located and is visible. ▼ WorkspaceHandlingTests.createAndOpenWorkspace - fetching user kubernetes namespace, storing auth token by getting workspaces API URL. ▼ ApiUrlResolver.obtainUserNamespace ‣ ApiUrlResolver.obtainUserNamespace - USER_NAMESPACE.length = 0, calling kubernetes API ‣ DriverHelper.getDriver (node:808869) Warning: Setting the NODE_TLS_REJECT_UNAUTHORIZED environment variable to '0' makes TLS connections and HTTPS requests insecure by disabling certificate verification. (Use `node --trace-warnings ...` to show where the warning was created) ▼ ApiUrlResolver.obtainUserNamespace - kubeapi success: admin-che ▼ Dashboard.clickCreateWorkspaceButton ‣ DriverHelper.waitAndClick - By(xpath, //div[@id="page-sidebar"]//a[text()="Create Workspace"]) ‣ DriverHelper.waitVisibility - By(xpath, //div[@id="page-sidebar"]//a[text()="Create Workspace"]) ‣ DriverHelper.waitVisibility - element is located and is visible. ▼ CreateWorkspace.waitPage ▼ CreateWorkspace.waitTitleContains - text: "Create Workspace" ‣ DriverHelper.waitVisibility - By(xpath, //h1[contains(text(), 'Create Workspace')]) ‣ DriverHelper.waitVisibility - element is located and is visible. ▼ CreateWorkspace.setCreateNewWorkspaceCheckbox - checked: true ▼ CreateWorkspace.isCreateNewWorkspaceCheckboxChecked ‣ DriverHelper.waitPresence - By(xpath, //input[@id="create-new-if-exist-switch"]) ▼ CreateWorkspace.setCreateNewWorkspaceCheckbox - Checkbox is already set, no action needed ▼ BrowserTabsUtil.getCurrentWindowHandle ‣ DriverHelper.getDriver ▼ CreateWorkspace.clickOnSampleNoEditorSelection - sampleName: "Empty Workspace" ‣ CreateWorkspace.getSampleLocator - sampleName: Empty Workspace, used default editor ‣ DriverHelper.waitAndClick - By(xpath, //article[contains(@Class, 'sample-card')]//div[text()='Empty Workspace']) ‣ DriverHelper.waitVisibility - By(xpath, //article[contains(@Class, 'sample-card')]//div[text()='Empty Workspace']) ‣ DriverHelper.waitVisibility - element is located and is visible. ▼ BrowserTabsUtil.waitAndSwitchToAnotherWindow ‣ DriverHelper.waitUntilTrue ▼ BrowserTabsUtil.getAllWindowHandles ‣ DriverHelper.getDriver ▼ BrowserTabsUtil.getAllWindowHandles ‣ DriverHelper.getDriver ▼ BrowserTabsUtil.switchToWindow ‣ DriverHelper.getDriver ✔ Create and open new workspace, stack:Empty Workspace ‣ DriverHelper.getDriver ‣ WorkspaceHandlingTests.obtainWorkspaceNameFromStartingPage - failed to obtain name from workspace start page, element not visible yet. Retrying. ‣ DriverHelper.wait - (2000 milliseconds) ‣ DriverHelper.getDriver ‣ WorkspaceHandlingTests.obtainWorkspaceNameFromStartingPage - failed to obtain name from workspace start page, element not visible yet. Retrying. ‣ DriverHelper.wait - (2000 milliseconds) ‣ DriverHelper.getDriver ‣ WorkspaceHandlingTests.obtainWorkspaceNameFromStartingPage - obtained starting workspace getText():Starting workspace empty-bxtk-ta2w ‣ WorkspaceHandlingTests.obtainWorkspaceNameFromStartingPage - trimmed workspace name from getText():empty-bxtk-ta2w • WorkspaceHandlingTests.obtainWorkspaceNameFromStartingPage - obtained workspace name from workspace loader page: empty-bxtk-ta2w ✔ Obtain workspace name from workspace loader page ▼ registerRunningWorkspace - with workspaceName:empty-bxtk-ta2w ✔ Register running workspace ▼ ProjectAndFileTests.waitWorkspaceReadinessForCheCodeEditor - waiting for editor. ‣ DriverHelper.waitVisibility - By(css selector, .monaco-workbench) ‣ DriverHelper.waitVisibility - polling timed out attempt #1, retrying with 2000ms timeout ‣ DriverHelper.waitVisibility - polling timed out attempt #2, retrying with 2000ms timeout ‣ DriverHelper.waitVisibility - polling timed out attempt #3, retrying with 2000ms timeout ‣ DriverHelper.waitVisibility - polling timed out attempt #4, retrying with 2000ms timeout ‣ DriverHelper.waitVisibility - polling timed out attempt #5, retrying with 2000ms timeout ‣ DriverHelper.waitVisibility - polling timed out attempt #6, retrying with 2000ms timeout ‣ DriverHelper.waitVisibility - polling timed out attempt #7, retrying with 2000ms timeout ‣ DriverHelper.waitVisibility - polling timed out attempt #8, retrying with 2000ms timeout ‣ DriverHelper.waitVisibility - polling timed out attempt #9, retrying with 2000ms timeout ‣ DriverHelper.waitVisibility - element is located and is visible. ▼ ProjectAndFileTests.waitWorkspaceReadinessForCheCodeEditor - editor was opened in 19412 seconds. ▼ Editor sections: ▼ Explorer (Ctrl+Shift+E) ▼ Search (Ctrl+Shift+F) ▼ Source Control (Ctrl+Shift+G) ▼ Run and Debug (Ctrl+Shift+D) ▼ Extensions (Ctrl+Shift+X) ✔ Wait workspace readiness ▼ Dashboard.openDashboard ‣ DriverHelper.navigateToUrl ‣ DriverHelper.getDriver ‣ DriverHelper.getDriver ▼ Dashboard.openDashboard - No alert detected ▼ Dashboard.waitPage ‣ DriverHelper.waitVisibility - By(xpath, //div[@id="page-sidebar"]//a[contains(text(), "Workspaces (")]) ‣ DriverHelper.waitVisibility - element is located and is visible. ‣ DriverHelper.waitVisibility - By(xpath, //div[@id="page-sidebar"]//a[text()="Create Workspace"]) ‣ DriverHelper.waitVisibility - element is located and is visible. ‣ BrowserTabsUtil.closeAllTabsExceptCurrent ▼ BrowserTabsUtil.getAllWindowHandles ‣ DriverHelper.getDriver ▼ BrowserTabsUtil.getCurrentWindowHandle ‣ DriverHelper.getDriver ▼ BrowserTabsUtil.switchToWindow ‣ DriverHelper.getDriver ‣ DriverHelper.getDriver ▼ BrowserTabsUtil.switchToWindow ‣ DriverHelper.getDriver ▼ TestWorkspaceUtil.stopAndDeleteWorkspaceByName ▼ TestWorkspaceUtil.stopWorkspaceByName - empty-bxtk-ta2w ▼ ApiUrlResolver.obtainUserNamespace ‣ ApiUrlResolver.obtainUserNamespace - USER_NAMESPACE.length = 0, calling kubernetes API ‣ DriverHelper.getDriver ▼ ApiUrlResolver.obtainUserNamespace - kubeapi success: admin-che ‣ DriverHelper.getDriver ▼ TestWorkspaceUtil.waitWorkspaceStatus ▼ ApiUrlResolver.obtainUserNamespace - admin-che ‣ DriverHelper.getDriver ‣ DriverHelper.wait - (1000 milliseconds) ▼ ApiUrlResolver.obtainUserNamespace - admin-che ‣ DriverHelper.getDriver ▼ TestWorkspaceUtil.stopWorkspaceByName - empty-bxtk-ta2w stopped successfully ▼ TestWorkspaceUtil.deleteWorkspaceByName - empty-bxtk-ta2w ▼ ApiUrlResolver.obtainUserNamespace - admin-che ‣ DriverHelper.getDriver ‣ DriverHelper.getDriver ‣ TestWorkspaceUtil.deleteWorkspaceByName - GET dashboard/api/namespace/admin-che/devworkspaces/empty-bxtk-ta2w returned status: 200; data: [object Object] ‣ DriverHelper.wait - (1000 milliseconds) ‣ DriverHelper.getDriver ▼ TestWorkspaceUtil.deleteWorkspaceByName - empty-bxtk-ta2w deleted successfully ▼ at /home/ndp/projects/che/tests/e2e/specs/MochaHooks.ts:39:12 - delete workspace name
4 passing (46s)
PR Checklist
As the author of this Pull Request I made sure that:
What issues does this PR fix or referenceandHow to test this PRcompletedReviewers
Reviewers, please comment how you tested the PR when approving it.
--
Assisted-by: Claude Code