Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add data rendering count for visualisation #28936

Conversation

dmlemeshko
Copy link
Member

@dmlemeshko dmlemeshko commented Jan 17, 2019

Summary

While working on WebDriver migration we faced many visualize app tests been flaky. Further investigation showed that data-render-complete attribute is not a reliable way to check if visualization is loaded:

The value can change from true to false multiple times as it depends on the number of renderings in happening each case, it can be 1 or it can be 3 of them. It is important to wait properly for loading done to avoid StaleElement exceptions.

@markov00 pointed me to his PR Adding data-rendering-count attribute to detect rendering cycles #22420, that I used as POC.

It proved to be a robust and reliable way to handle visualizations being loaded, I haven't seen a better solution so far.

With this PR we have:

  • waitForRenderingCount(previousCount = 0, increment = 1) that waits for specific number of renderings to be completed; Should be used when renderings increment is contant (e.g. +1 when visualizeEditorRenderButton is clicked)
  • waitForVisualization() is waiting until data-rendering-count number is constant within 1000 ms; there are cases when final number of renderings cannot be predicted (changing from 1 to 3 each test run), e.g. after filterBar.removeFilter is called in pie chart tests

Checklist

- [ ] This was checked for cross-browser compatibility, including a check against IE11
- [ ] Any text added follows EUI's writing guidelines, uses sentence case text and includes i18n support
- [ ] Documentation was added for features that require explanation or tutorials

For maintainers

- [ ] This was checked for breaking API changes and was labeled appropriately
- [ ] This includes a feature addition or change that requires a release note and was labeled appropriately

@elasticmachine
Copy link
Contributor

💚 Build Succeeded

@elasticmachine
Copy link
Contributor

💔 Build Failed

Copy link
Contributor

@spalger spalger left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, tiny naming suggestion but feel free to ignore

});
}

async waitForVisualizationRenderingCompleted() {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

naming suggestion: waitForVisualizationRenderingStabilized()

@elasticmachine
Copy link
Contributor

💚 Build Succeeded

@elasticmachine
Copy link
Contributor

💚 Build Succeeded

@dmlemeshko dmlemeshko merged commit cf386f1 into elastic:master Jan 21, 2019
dmlemeshko added a commit to dmlemeshko/kibana that referenced this pull request Jan 23, 2019
* add RENDERING_COUNT_ATTRIBUTE

* update tests with new wait for visualization

* update 'tile map visualize app' tests with await and waitForVisualization

* update tests with waitForVisualization

* remove waitVisualisationLoaded

* fix naming suggestion

* remove redundant waiting in functional tests
dmlemeshko added a commit that referenced this pull request Jan 23, 2019
* add RENDERING_COUNT_ATTRIBUTE

* update tests with new wait for visualization

* update 'tile map visualize app' tests with await and waitForVisualization

* update tests with waitForVisualization

* remove waitVisualisationLoaded

* fix naming suggestion

* remove redundant waiting in functional tests
@dmlemeshko dmlemeshko deleted the add-data-rendering-count-for-visualisation branch January 31, 2022 12:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants