elastic / kibana

Your window into the Elastic Stack
https://www.elastic.co/products/kibana
Other
19.58k stars 8.21k forks source link

Failing test: UI Functional Tests.test/functional/apps/dashboard/time_zones·js - dashboard app using current data dashboard time zones "before all" hook #33654

Closed kibanamachine closed 5 years ago

kibanamachine commented 5 years ago

A test failed on a tracked branch


        Error: retry.try timeout: TimeoutError: Waiting for element to be located By(css selector, [data-test-subj~="dashboardListingTitleLink-time-zone-test"])
Wait timed out after 10030ms
    at node_modules/selenium-webdriver/lib/webdriver.js:834:17
    at process._tickCallback (internal/process/next_tick.js:68:7)
    at test/common/services/retry/retry_for_success.ts:25:11
    at Object.retryForSuccess (test/common/services/retry/retry_for_success.ts:53:19)

First failure: Jenkins Build

elasticmachine commented 5 years ago

Pinging @elastic/kibana-test-triage

spalger commented 5 years ago
[00:07:17]                 │ debg TestSubjects.click(objects)
[00:07:17]                 │ debg Find.clickByCssSelector('[data-test-subj~="objects"]') with timeout=10000
[00:07:17]                 │ debg Find.findByCssSelector('[data-test-subj~="objects"]') with timeout=10000
[00:07:18]                 │ debg importFile(/var/lib/jenkins/workspace/elastic+kibana+7.x/JOB/kibana-ciGroup2/node/immutable/kibana/test/functional/apps/dashboard/exports/timezonetest_6_2_4.json)
[00:07:18]                 │ debg Clicking importObjects
[00:07:18]                 │ debg TestSubjects.click(importObjects)
[00:07:18]                 │ debg Find.clickByCssSelector('[data-test-subj~="importObjects"]') with timeout=10000
[00:07:18]                 │ debg Find.findByCssSelector('[data-test-subj~="importObjects"]') with timeout=10000
[00:07:18]                 │ debg Setting the path on the file input
[00:07:18]                 │ debg Find.setValue('.euiFilePicker__input', '/var/lib/jenkins/workspace/elastic+kibana+7.x/JOB/kibana-ciGroup2/node/immutable/kibana/test/functional/apps/dashboard/exports/timezonetest_6_2_4.json')
[00:07:18]                 │ debg Find.findByCssSelector('.euiFilePicker__input') with timeout=10000
[00:07:18]                 │ debg Leaving overwriteAll alone
[00:07:18]                 │ debg TestSubjects.click(importSavedObjectsImportBtn)
[00:07:18]                 │ debg Find.clickByCssSelector('[data-test-subj~="importSavedObjectsImportBtn"]') with timeout=10000
[00:07:18]                 │ debg Find.findByCssSelector('[data-test-subj~="importSavedObjectsImportBtn"]') with timeout=10000
[00:07:18]                 │ debg done importing the file
[00:07:18]                 │ debg navigating to dashboard url: http://localhost:5620/app/kibana#/dashboards
[00:07:18]                 │ debg navigate to: http://localhost:5620/app/kibana#/dashboards
[00:07:19]                 │ debg ... sleep(700) start
[00:07:19]                 │ debg ... sleep(700) end
[00:07:19]                 │ debg returned from get, calling refresh
[00:07:20]                 │ debg currentUrl = http://localhost:5620/app/kibana#/dashboards
[00:07:20]                 │          appUrl = http://localhost:5620/app/kibana#/dashboards
[00:07:20]                 │ debg Find.findByCssSelector('[data-test-subj="kibanaChrome"]') with timeout=240000
[00:07:21]                 │ debg TestSubjects.find(kibanaChrome)
[00:07:21]                 │ debg Find.findByCssSelector('[data-test-subj~="kibanaChrome"]') with timeout=10000
[00:07:21]                 │ debg ... sleep(501) start
[00:07:22]                 │ debg ... sleep(501) end
[00:07:22]                 │ debg in navigateTo url = http://localhost:5620/app/kibana#/dashboards?_g=()
[00:07:22]                 │ debg TestSubjects.exists(statusPageContainer)
[00:07:22]                 │ debg Find.existsByDisplayedByCssSelector('[data-test-subj~="statusPageContainer"]') with timeout=2500
[00:07:24]                 │ debg Load Saved Dashboard time zone test
[00:07:24]                 │ debg gotoDashboardLandingPage
[00:07:24]                 │ debg onDashboardLandingPage
[00:07:24]                 │ debg TestSubjects.exists(dashboardLandingPage)
[00:07:24]                 │ debg Find.existsByDisplayedByCssSelector('[data-test-subj~="dashboardLandingPage"]') with timeout=5000
[00:07:24]                 │ debg searchForDashboardWithName: time zone test
[00:07:24]                 │ debg gotoDashboardLandingPage
[00:07:24]                 │ debg onDashboardLandingPage
[00:07:24]                 │ debg TestSubjects.exists(dashboardLandingPage)
[00:07:24]                 │ debg Find.existsByDisplayedByCssSelector('[data-test-subj~="dashboardLandingPage"]') with timeout=5000
[00:07:24]                 │ debg Find.allByCssSelector('.euiFieldSearch') with timeout=10000
[00:07:25]                 │ debg isGlobalLoadingIndicatorVisible
[00:07:25]                 │ debg TestSubjects.exists(globalLoadingIndicator)
[00:07:25]                 │ debg Find.existsByDisplayedByCssSelector('[data-test-subj~="globalLoadingIndicator"]') with timeout=2500
[00:07:27]                 │ debg TestSubjects.exists(globalLoadingIndicator-hidden)
[00:07:27]                 │ debg Find.existsByCssSelector('[data-test-subj~="globalLoadingIndicator-hidden"]') with timeout=100000
[00:07:27]                 │ debg TestSubjects.click(dashboardListingTitleLink-time-zone-test)
[00:07:27]                 │ debg Find.clickByCssSelector('[data-test-subj~="dashboardListingTitleLink-time-zone-test"]') with timeout=10000
[00:07:27]                 │ debg Find.findByCssSelector('[data-test-subj~="dashboardListingTitleLink-time-zone-test"]') with timeout=10000
[00:07:37]                 │ debg --- retry.try error: Waiting for element to be located By(css selector, [data-test-subj~="dashboardListingTitleLink-time-zone-test"])
[00:07:37]                 │      Wait timed out after 10005ms

image

Since this is relying on PageObjects.settings.importFile(), but isn't waiting for the import to finish, it seems totally logical that the race is caused by not waiting for the import to complete. Everywhere else we use importFile() we follow it up with PageObjects.header.waitUntilLoadingHasFinished(), so I'm going to try that out and maybe just put it in the importFile() function instead of requiring that it get called every time.