Skip to content

Commit

Permalink
[BACKPORT] Backport 2.4 commits to 2.x (opensearch-project#1277)
Browse files Browse the repository at this point in the history
* [2.4] Add log pattern table (#1187) (#1212) (#1215)

Signed-off-by: Joshua Li <[email protected]>
(cherry picked from commit 8a652ddb93ece2c93d3b64db035757f6ee5fea99)

Co-authored-by: Joshua Li <[email protected]>

* [Backport 2.4] Merge main to 2.4 (#1217)

* removing add sample data test (#668)

Signed-off-by: Shenoy Pratik <[email protected]>

* Fix change availability bug (#667)

Signed-off-by: Eugene Lee <[email protected]>

* Fix test to check for empty event analytics (#669)

Signed-off-by: Eugene Lee <[email protected]>

* Add release notes for 2.0.0-rc1 (#674)

Signed-off-by: Joshua Li <[email protected]>

* remove candlestick from visualizations (#690)

Signed-off-by: Mrunal Zambre <[email protected]>

* [OSD][Tests] add test subject to app title for app analytics (#686)

* [OSD][Tests] add test subject to app title for app analytics

Using a test subject we can find the specific element instead
of trying to search the DOM for the class and hope the class
is the right class that contains the element we are looking for.

We can search the dom for this specific test subject and actually
make the test runner wait until this test subject exists before
executing the tests.

Issue related:
https://github.com/opensearch-project/observability/issues/679

Signed-off-by: Kawika Avilla <[email protected]>

* update one example for cypress tests

Signed-off-by: Kawika Avilla <[email protected]>

* Support integTestRemote with security enabled endpoint (#699)

Signed-off-by: Joshua Li <[email protected]>

* Add data test subj to app analytics (#704)

Signed-off-by: Eugene Lee <[email protected]>

* integrate job-scheduler into observability (#609)

Signed-off-by: Zhongnan Su <[email protected]>

* Add availability entry points (#731)

Signed-off-by: Eugene Lee <[email protected]>

* Update availabilityVizId if visualization is removed from panel (#732)

Signed-off-by: Eugene Lee <[email protected]>

* Remove rc1 reference (#730)

Signed-off-by: Eugene Lee <[email protected]>

* Issue fix not a function error (#739)

* Bump prismjs from 1.25.0 to 1.27.0 in /dashboards-observability (#508) (#574)

Bumps [prismjs](https://github.com/PrismJS/prism) from 1.25.0 to 1.27.0.
- [Release notes](https://github.com/PrismJS/prism/releases)
- [Changelog](https://github.com/PrismJS/prism/blob/master/CHANGELOG.md)
- [Commits](https://github.com/PrismJS/prism/compare/v1.25.0...v1.27.0)

---
updated-dependencies:
- dependency-name: prismjs
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <[email protected]>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
(cherry picked from commit f85aecf303f0d3f549339752feb9738e5cd42a7f)

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* change to support java 8 in compile and runtime (#575) (#576)

Signed-off-by: Zhongnan Su <[email protected]>
(cherry picked from commit a123560cbca753552d135078ba4f59c3a0e4a64e)

Co-authored-by: Zhongnan Su <[email protected]>

* Add 1.3.0 release notes (#580) (#582)

Signed-off-by: Eugene Lee <[email protected]>

* bug fixes

Signed-off-by: Eric Wei <[email protected]>

Co-authored-by: opensearch-trigger-bot[bot] <98922864+opensearch-trigger-bot[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Zhongnan Su <[email protected]>

* Release notes 2.0.0.0 (#757)

Signed-off-by: vamsi-amazon <[email protected]>

* Add availability help flyout (#734)

Signed-off-by: Eugene Lee <[email protected]>

* Make common delete modal for components (#766)

Signed-off-by: Eugene Lee <[email protected]>

* Sync app and app list types (#763)

Signed-off-by: Eugene Lee <[email protected]>

* [WIP]: Cypress automation for Trace analytics dashboard application (#775)

* Added cypress test cases for tooltip and search engine on Trace dashboard

Signed-off-by: Pratibha Pandey <[email protected]>

* Added test cases for filters

Signed-off-by: Pratibha Pandey <[email protected]>

* Added cypress test cases for tooltip and search engine on Trace dashboard

Signed-off-by: Pratibha Pandey <[email protected]>

* Added test cases for filters

Signed-off-by: Pratibha Pandey <[email protected]>

* Added test cases for Service page in Trace analytics

Signed-off-by: Pratibha Pandey <[email protected]>

* Added Cypress test cases for trace analytics services spans table

Signed-off-by: Deepak Nevde <[email protected]>

* Cypress test case for Traces

Signed-off-by: Nidhi Singhai <[email protected]>

* Cypress test case for Traces Updated

Signed-off-by: Nidhi Singhai <[email protected]>

* Worked on review comments

Signed-off-by: Pratibha Pandey <[email protected]>

Co-authored-by: Deepak Nevde <[email protected]>
Co-authored-by: Nidhi Singhai <[email protected]>

* Feature/error toast on invalid valueoption selection 666 (#736)

* rendered default axes selected and added error toasts on Save and Apply click if invalid value option selected

Signed-off-by: rinku-kumar-psl <[email protected]>

* Cypress changes for error toasts on invalid value options selected

Signed-off-by: rinku-kumar-psl <[email protected]>

* added constant VIZ_CONTAIN_XY_AXIS for x, y value axis

Signed-off-by: rinku-kumar-psl <[email protected]>

* [Feature]: Treemap chart support in Event Analytics (#693)

* Initial commit for treemap visualization

Signed-off-by: Mrunal Zambre <[email protected]>

* changes to labelField, layout and config

Signed-off-by: Mrunal Zambre <[email protected]>

* reverted changes of layoutConfig

Signed-off-by: Mrunal Zambre <[email protected]>

* Cypress TestCase for TreeMap

Signed-off-by: Nidhi Singhai <[email protected]>

* added new line

Signed-off-by: Mrunal Zambre <[email protected]>

* updated test cases

Signed-off-by: Mrunal Zambre <[email protected]>

* reverted snapshots

Signed-off-by: Mrunal Zambre <[email protected]>

* implemented treemap config options

Signed-off-by: Mrunal Zambre <[email protected]>

* added multicolored theme option

Signed-off-by: Mrunal Zambre <[email protected]>

* updated snapshots

Signed-off-by: Mrunal Zambre <[email protected]>

* Updated test scripts for multicolored section

Signed-off-by: Pratibha Pandey <[email protected]>

* Fixed default selection for treemap

Signed-off-by: Mrunal Zambre <[email protected]>

Co-authored-by: Nidhi Singhai <[email protected]>
Co-authored-by: Pratibha Pandey <[email protected]>

* Uses custom plugin to publish zips to maven (#786)

Signed-off-by: Joshua Li <[email protected]>

* Cypress automation for Notebooks application (#809)

* Added test cases for Notebooks application

Signed-off-by: Pratibha Pandey <[email protected]>

* Added test cases for empty state of Notebooks table

Signed-off-by: Pratibha Pandey <[email protected]>

* Feature/Pie chart legend, chart style, color theme and cypress test cases for same. (#776)

* pie chart legends, chart color contrast and cypress test cases

Signed-off-by: Deepak Nevde <[email protected]>

* Added color code in constants

Signed-off-by: Deepak Nevde <[email protected]>

* Snapshots updated

Signed-off-by: Deepak Nevde <[email protected]>

* Conflicts resolved

Signed-off-by: Deepak Nevde <[email protected]>

* Review comment addressed

Signed-off-by: Deepak Nevde <[email protected]>

* color variable changes

Signed-off-by: Deepak Nevde <[email protected]>

* [Feature]: Heatmap- Color theme implementation in config panel (#778)

* Implementation of color theme for heatmap

Signed-off-by: ruchika-narang <[email protected]>

* refactoring code

Signed-off-by: ruchika-narang <[email protected]>

* HeatMap Cypress TestCase

Signed-off-by: Nidhi Singhai <[email protected]>

* Cypress TestCase for HeatMap

Signed-off-by: Nidhi Singhai <[email protected]>

* Update Done according to Comment

Signed-off-by: Nidhi Singhai <[email protected]>

* Refactored code

Signed-off-by: ruchika-narang <[email protected]>

* Updated snapshot test case

Signed-off-by: ruchika-narang <[email protected]>

* Fixed toast implementation and no result found for heatmap

Signed-off-by: ruchika-narang <[email protected]>

* Undefined checks for value options

Signed-off-by: ruchika-narang <[email protected]>

Co-authored-by: Nidhi Singhai <[email protected]>

* [Enhancement]: Pie Config Panel features v1  (#816)

* updated dimensions and metrics UI for pie chart

Signed-off-by: Mrunal Zambre <[email protected]>

* updated imports

Signed-off-by: Mrunal Zambre <[email protected]>

* updated snapshots

Signed-off-by: Mrunal Zambre <[email protected]>

* [Enhancement]: TreeMap Config Panel features v1 (#814)

* added support for multiple parents in treemap

Signed-off-by: Mrunal Zambre <[email protected]>

* minor type and position fixes

Signed-off-by: Mrunal Zambre <[email protected]>

* added default values for color pickers

Signed-off-by: Mrunal Zambre <[email protected]>

* resolved review comments

Signed-off-by: Mrunal Zambre <[email protected]>

* TreeMap Enhancement TestCases

Signed-off-by: Nidhi Singhai <[email protected]>

* TreeMap Enhancement TestCases

Signed-off-by: Nidhi Singhai <[email protected]>

* TreeMap Enhancement TestCases Updated

Signed-off-by: Nidhi Singhai <[email protected]>

* Update Done

Signed-off-by: Nidhi Singhai <[email protected]>

* fixed default parent color pickers state

Signed-off-by: Mrunal Zambre <[email protected]>

* fixed undefined check

Signed-off-by: Mrunal Zambre <[email protected]>

* updated snapshots

Signed-off-by: Mrunal Zambre <[email protected]>

Co-authored-by: Nidhi Singhai <[email protected]>
Co-authored-by: Subrat Pattnaik <[email protected]>

* Bar chart: Legend, Chart styles, and Color Theme features implementation on config panel - 697 (#780)

* mode, orientation and rotate labels implementation under Chart style for Bar chart

Signed-off-by: rinku-kumar-psl <[email protected]>

# Conflicts:
#	dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/config_button_group.tsx

* LineWidth and Fill-opacity changes

Signed-off-by: rinku-kumar-psl <[email protected]>

# Conflicts:
#	dashboards-observability/public/components/event_analytics/utils/utils.tsx

* Bar Group Width, Bar Width changes and rotated label hiding issue resolved

Signed-off-by: rinku-kumar-psl <[email protected]>

* corner cases handled for bar with and group Width and conditionally rendered rotate label UI

Signed-off-by: rinku-kumar-psl <[email protected]>

* Bar chart legend and color theme changes

Signed-off-by: rinku-kumar-psl <[email protected]>

# Conflicts:
#	dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/config_legend.tsx

* Snapshots updated

Signed-off-by: rinku-kumar-psl <[email protected]>

* empty line added

Signed-off-by: rinku-kumar-psl <[email protected]>

# Conflicts:
#	dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/config_button_group.tsx
#	dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/config_legend.tsx

* review comment addressed

Signed-off-by: rinku-kumar-psl <[email protected]>

# Conflicts:
#	dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/config_legend.tsx

* snapshot updated

Signed-off-by: rinku-kumar-psl <[email protected]>

* PR review comment addressed.

Signed-off-by: rinku-kumar-psl <[email protected]>

# Conflicts:
#	dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/config_button_group.tsx

* add button constant added

Signed-off-by: rinku-kumar-psl <[email protected]>

* changed rgba to rgb in bar.tsx

Signed-off-by: rinku-kumar-psl <[email protected]>

* snapshot updated

Signed-off-by: rinku-kumar-psl <[email protected]>

* bump version to 2.1.0 and bump gradle to 7.4.2 (#817)

Signed-off-by: Kavitha Conjeevaram Mohan <[email protected]>

* 2.1 release notes (#839)

Signed-off-by: Kavitha Conjeevaram Mohan <[email protected]>

* change 2.1 version bump PR under maintenance  (#841)

* change version bump to maintenance

Signed-off-by: Kavitha Conjeevaram Mohan <[email protected]>

* change version bump to maintenance

Signed-off-by: Kavitha Conjeevaram Mohan <[email protected]>

* Sprint1 : combine PR for visualization from Sprint1 (#824)

* graph style section UI schema

Signed-off-by: rinku-kumar-psl <[email protected]>

# Conflicts:
#	dashboards-observability/public/components/visualizations/charts/lines/line_type.ts

* changes for style mode and interpolation

Signed-off-by: rinku-kumar-psl <[email protected]>

# Conflicts:
#	dashboards-observability/public/components/visualizations/charts/lines/line_type.ts

# Conflicts:
#	dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/index.ts

# Conflicts:
#	dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/index.ts

# Conflicts:
#	dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/index.ts

* lineWidth integration for line mode

Signed-off-by: rinku-kumar-psl <[email protected]>

# Conflicts:
#	dashboards-observability/public/components/visualizations/charts/lines/line.tsx
#	dashboards-observability/public/components/visualizations/charts/lines/line_type.ts

# Conflicts:
#	dashboards-observability/common/constants/shared.ts
#	dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/config_style_slider.tsx

* changes for Legend and Orientation in Line

Signed-off-by: rinku-kumar-psl <[email protected]>

# Conflicts:
#	dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/config_button_group.tsx
#	dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/config_legend.tsx
#	dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/index.ts

# Conflicts:
#	dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/config_style_slider.tsx

* point size and Bar Alignment changes

Signed-off-by: rinku-kumar-psl <[email protected]>

# Conflicts:
#	dashboards-observability/public/components/visualizations/charts/lines/line.tsx
#	dashboards-observability/public/components/visualizations/charts/lines/line_type.ts

# Conflicts:
#	dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/index.ts

# Conflicts:
#	dashboards-observability/common/constants/shared.ts
#	dashboards-observability/common/types/explorer.ts

* implemented fill opacity for line chart

Signed-off-by: rinku-kumar-psl <[email protected]>

# Conflicts:
#	dashboards-observability/public/components/visualizations/charts/lines/line.tsx

# Conflicts:
#	dashboards-observability/public/components/event_analytics/utils/utils.tsx

* changes for line width and fill opacity in bar mode and removed mode from chartOption

Signed-off-by: rinku-kumar-psl <[email protected]>

# Conflicts:
#	dashboards-observability/common/constants/shared.ts

* updated bar mode opacity in line chart

Signed-off-by: rinku-kumar-psl <[email protected]>

* refactored the config chart style code

Signed-off-by: rinku-kumar-psl <[email protected]>

# Conflicts:
#	dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/index.ts

# Conflicts:
#	dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/index.ts

# Conflicts:
#	dashboards-observability/common/constants/shared.ts
#	dashboards-observability/common/types/explorer.ts

* snapshot updated and code refactored

Signed-off-by: rinku-kumar-psl <[email protected]>

# Conflicts:
#	dashboards-observability/public/components/event_analytics/utils/utils.tsx

* type added to new component

Signed-off-by: rinku-kumar-psl <[email protected]>

# Conflicts:
#	dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/config_button_group.tsx

# Conflicts:
#	dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/config_style_slider.tsx

* review comments addressed

Signed-off-by: rinku-kumar-psl <[email protected]>

# Conflicts:
#	dashboards-observability/public/components/event_analytics/utils/utils.tsx

# Conflicts:
#	dashboards-observability/common/constants/shared.ts

* cypress test case added and resolve button label wraping issue

Signed-off-by: rinku-kumar-psl <[email protected]>

# Conflicts:
#	dashboards-observability/.cypress/integration/1_event_analytics.spec.js
#	dashboards-observability/.cypress/utils/event_constants.js

# Conflicts:
#	dashboards-observability/.cypress/integration/1_event_analytics.spec.js

# Conflicts:
#	dashboards-observability/.cypress/integration/1_event_analytics.spec.js

* multi matrices changes for Line

Signed-off-by: rinku-kumar-psl <[email protected]>

* dimensions and metrics UI changes for time-series

Signed-off-by: rinku-kumar-psl <[email protected]>

# Conflicts:
#	dashboards-observability/common/constants/explorer.ts
#	dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/data_config_panel_item.tsx
#	dashboards-observability/public/components/event_analytics/explorer/visualizations/index.tsx

* made data config pannel collapsable and initial fields render

Signed-off-by: rinku-kumar-psl <[email protected]>

# Conflicts:
#	dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/data_config_panel_item.tsx
#	dashboards-observability/public/components/event_analytics/explorer/visualizations/index.tsx

* code refactored

Signed-off-by: rinku-kumar-psl <[email protected]>

# Conflicts:
#	dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/data_config_panel_item.tsx

* snapshot updated and handled corner cases

Signed-off-by: rinku-kumar-psl <[email protected]>

* code styling fixes and added TODO comment

Signed-off-by: rinku-kumar-psl <[email protected]>

* table view: eui table replaced with ag-grid

Signed-off-by: Ramneet Chopra <[email protected]>

* drag-drop issue fixed

Signed-off-by: Ramneet Chopra <[email protected]>

* test case of data_table updated

Signed-off-by: Ramneet Chopra <[email protected]>

* feedback comments resolved

Signed-off-by: Ramneet Chopra <[email protected]>

* grid height issue:fixed

Signed-off-by: Ramneet Chopra <[email protected]>

* column height, value getter for type double

Signed-off-by: Ramneet Chopra <[email protected]>

* data_table elements moved to separate

Signed-off-by: Ramneet Chopra <[email protected]>

* footer components

Signed-off-by: Ramneet Chopra <[email protected]>

* cypress test cases for table view

Signed-off-by: Ramneet Chopra <[email protected]>

* data config reviewed code added

Signed-off-by: Deepak Nevde <[email protected]>

* Text correction

Signed-off-by: Deepak Nevde <[email protected]>

* Conflicts resolved

Signed-off-by: Deepak Nevde <[email protected]>

* enhancement for heatmap with new UI

Signed-off-by: Shankha Das <[email protected]>

* line chart test cases

Signed-off-by: Shankha Das <[email protected]>

* console logs removed

Signed-off-by: Shankha Das <[email protected]>

* updated value options ui for treemap

Signed-off-by: Mrunal Zambre <[email protected]>

* removed console

Signed-off-by: Mrunal Zambre <[email protected]>

* sprint1-visualization-fixes.

Signed-off-by: abasatwar <[email protected]>

* initialize default params for DimensonComponent and formatted the codes

Signed-off-by: rinku-kumar-psl <[email protected]>

* code review changes done

Signed-off-by: rinku-kumar-psl <[email protected]>

* added empty line at end.

Signed-off-by: abasatwar <[email protected]>

Co-authored-by: rinku-kumar-psl <[email protected]>
Co-authored-by: Ramneet Chopra <[email protected]>
Co-authored-by: Deepak Nevde <[email protected]>
Co-authored-by: Shankha Das <[email protected]>
Co-authored-by: Mrunal Zambre <[email protected]>

* Bump moment from 2.29.2 to 2.29.4 in /dashboards-observability (#845)

Bumps [moment](https://github.com/moment/moment) from 2.29.2 to 2.29.4.
- [Release notes](https://github.com/moment/moment/releases)
- [Changelog](https://github.com/moment/moment/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/moment/moment/compare/2.29.2...2.29.4)

---
updated-dependencies:
- dependency-name: moment
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <[email protected]>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Sprint2 (#47) (#868)

* graph style section UI schema

Signed-off-by: rinku-kumar-psl <[email protected]>

# Conflicts:
#	dashboards-observability/public/components/visualizations/charts/lines/line_type.ts

* changes for style mode and interpolation

Signed-off-by: rinku-kumar-psl <[email protected]>

# Conflicts:
#	dashboards-observability/public/components/visualizations/charts/lines/line_type.ts

# Conflicts:
#	dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/index.ts

# Conflicts:
#	dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/index.ts

# Conflicts:
#	dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/index.ts

* lineWidth integration for line mode

Signed-off-by: rinku-kumar-psl <[email protected]>

# Conflicts:
#	dashboards-observability/public/components/visualizations/charts/lines/line.tsx
#	dashboards-observability/public/components/visualizations/charts/lines/line_type.ts

# Conflicts:
#	dashboards-observability/common/constants/shared.ts
#	dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/config_style_slider.tsx

* changes for Legend and Orientation in Line

Signed-off-by: rinku-kumar-psl <[email protected]>

# Conflicts:
#	dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/config_button_group.tsx
#	dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/config_legend.tsx
#	dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/index.ts

# Conflicts:
#	dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/config_style_slider.tsx

* point size and Bar Alignment changes

Signed-off-by: rinku-kumar-psl <[email protected]>

# Conflicts:
#	dashboards-observability/public/components/visualizations/charts/lines/line.tsx
#	dashboards-observability/public/components/visualizations/charts/lines/line_type.ts

# Conflicts:
#	dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/index.ts

# Conflicts:
#	dashboards-observability/common/constants/shared.ts
#	dashboards-observability/common/types/explorer.ts

* implemented fill opacity for line chart

Signed-off-by: rinku-kumar-psl <[email protected]>

# Conflicts:
#	dashboards-observability/public/components/visualizations/charts/lines/line.tsx

# Conflicts:
#	dashboards-observability/public/components/event_analytics/utils/utils.tsx

* changes for line width and fill opacity in bar mode and removed mode from chartOption

Signed-off-by: rinku-kumar-psl <[email protected]>

# Conflicts:
#	dashboards-observability/common/constants/shared.ts

* updated bar mode opacity in line chart

Signed-off-by: rinku-kumar-psl <[email protected]>

* refactored the config chart style code

Signed-off-by: rinku-kumar-psl <[email protected]>

# Conflicts:
#	dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/index.ts

# Conflicts:
#	dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/index.ts

# Conflicts:
#	dashboards-observability/common/constants/shared.ts
#	dashboards-observability/common/types/explorer.ts

* snapshot updated and code refactored

Signed-off-by: rinku-kumar-psl <[email protected]>

# Conflicts:
#	dashboards-observability/public/components/event_analytics/utils/utils.tsx

* type added to new component

Signed-off-by: rinku-kumar-psl <[email protected]>

# Conflicts:
#	dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/config_button_group.tsx

# Conflicts:
#	dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/config_style_slider.tsx

* review comments addressed

Signed-off-by: rinku-kumar-psl <[email protected]>

# Conflicts:
#	dashboards-observability/public/components/event_analytics/utils/utils.tsx

# Conflicts:
#	dashboards-observability/common/constants/shared.ts

* cypress test case added and resolve button label wraping issue

Signed-off-by: rinku-kumar-psl <[email protected]>

# Conflicts:
#	dashboards-observability/.cypress/integration/1_event_analytics.spec.js
#	dashboards-observability/.cypress/utils/event_constants.js

# Conflicts:
#	dashboards-observability/.cypress/integration/1_event_analytics.spec.js

# Conflicts:
#	dashboards-observability/.cypress/integration/1_event_analytics.spec.js

* multi matrices changes for Line

Signed-off-by: rinku-kumar-psl <[email protected]>

* dimensions and metrics UI changes for time-series

Signed-off-by: rinku-kumar-psl <[email protected]>

# Conflicts:
#	dashboards-observability/common/constants/explorer.ts
#	dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/data_config_panel_item.tsx
#	dashboards-observability/public/components/event_analytics/explorer/visualizations/index.tsx

* made data config pannel collapsable and initial fields render

Signed-off-by: rinku-kumar-psl <[email protected]>

# Conflicts:
#	dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/data_config_panel_item.tsx
#	dashboards-observability/public/components/event_analytics/explorer/visualizations/index.tsx

* code refactored

Signed-off-by: rinku-kumar-psl <[email protected]>

# Conflicts:
#	dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/data_config_panel_item.tsx

* snapshot updated and handled corner cases

Signed-off-by: rinku-kumar-psl <[email protected]>

* code styling fixes and added TODO comment

Signed-off-by: rinku-kumar-psl <[email protected]>

* sequence change for dimensions and metrics

Signed-off-by: Deepak Nevde <[email protected]>

* Sprint1 (#14)

* graph style section UI schema

Signed-off-by: rinku-kumar-psl <[email protected]>

# Conflicts:
#	dashboards-observability/public/components/visualizations/charts/lines/line_type.ts

* changes for style mode and interpolation

Signed-off-by: rinku-kumar-psl <[email protected]>

# Conflicts:
#	dashboards-observability/public/components/visualizations/charts/lines/line_type.ts

# Conflicts:
#	dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/index.ts

# Conflicts:
#	dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/index.ts

# Conflicts:
#	dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/index.ts

* lineWidth integration for line mode

Signed-off-by: rinku-kumar-psl <[email protected]>

# Conflicts:
#	dashboards-observability/public/components/visualizations/charts/lines/line.tsx
#	dashboards-observability/public/components/visualizations/charts/lines/line_type.ts

# Conflicts:
#	dashboards-observability/common/constants/shared.ts
#	dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/config_style_slider.tsx

* changes for Legend and Orientation in Line

Signed-off-by: rinku-kumar-psl <[email protected]>

# Conflicts:
#	dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/config_button_group.tsx
#	dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/config_legend.tsx
#	dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/index.ts

# Conflicts:
#	dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/config_style_slider.tsx

* point size and Bar Alignment changes

Signed-off-by: rinku-kumar-psl <[email protected]>

# Conflicts:
#	dashboards-observability/public/components/visualizations/charts/lines/line.tsx
#	dashboards-observability/public/components/visualizations/charts/lines/line_type.ts

# Conflicts:
#	dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/index.ts

# Conflicts:
#	dashboards-observability/common/constants/shared.ts
#	dashboards-observability/common/types/explorer.ts

* implemented fill opacity for line chart

Signed-off-by: rinku-kumar-psl <[email protected]>

# Conflicts:
#	dashboards-observability/public/components/visualizations/charts/lines/line.tsx

# Conflicts:
#	dashboards-observability/public/components/event_analytics/utils/utils.tsx

* changes for line width and fill opacity in bar mode and removed mode from chartOption

Signed-off-by: rinku-kumar-psl <[email protected]>

# Conflicts:
#	dashboards-observability/common/constants/shared.ts

* updated bar mode opacity in line chart

Signed-off-by: rinku-kumar-psl <[email protected]>

* refactored the config chart style code

Signed-off-by: rinku-kumar-psl <[email protected]>

# Conflicts:
#	dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/index.ts

# Conflicts:
#	dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/index.ts

# Conflicts:
#	dashboards-observability/common/constants/shared.ts
#	dashboards-observability/common/types/explorer.ts

* snapshot updated and code refactored

Signed-off-by: rinku-kumar-psl <[email protected]>

# Conflicts:
#	dashboards-observability/public/components/event_analytics/utils/utils.tsx

* type added to new component

Signed-off-by: rinku-kumar-psl <[email protected]>

# Conflicts:
#	dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/config_button_group.tsx

# Conflicts:
#	dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/config_style_slider.tsx

* review comments addressed

Signed-off-by: rinku-kumar-psl <[email protected]>

# Conflicts:
#	dashboards-observability/public/components/event_analytics/utils/utils.tsx

# Conflicts:
#	dashboards-observability/common/constants/shared.ts

* cypress test case added and resolve button label wraping issue

Signed-off-by: rinku-kumar-psl <[email protected]>

# Conflicts:
#	dashboards-observability/.cypress/integration/1_event_analytics.spec.js
#	dashboards-observability/.cypress/utils/event_constants.js

# Conflicts:
#	dashboards-observability/.cypress/integration/1_event_analytics.spec.js

# Conflicts:
#	dashboards-observability/.cypress/integration/1_event_analytics.spec.js

* multi matrices changes for Line

Signed-off-by: rinku-kumar-psl <[email protected]>

* dimensions and metrics UI changes for time-series

Signed-off-by: rinku-kumar-psl <[email protected]>

# Conflicts:
#	dashboards-observability/common/constants/explorer.ts
#	dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/data_config_panel_item.tsx
#	dashboards-observability/public/components/event_analytics/explorer/visualizations/index.tsx

* made data config pannel collapsable and initial fields render

Signed-off-by: rinku-kumar-psl <[email protected]>

# Conflicts:
#	dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/data_config_panel_item.tsx
#	dashboards-observability/public/components/event_analytics/explorer/visualizations/index.tsx

* code refactored

Signed-off-by: rinku-kumar-psl <[email protected]>

# Conflicts:
#	dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/data_config_panel_item.tsx

* snapshot updated and handled corner cases

Signed-off-by: rinku-kumar-psl <[email protected]>

* code styling fixes and added TODO comment

Signed-off-by: rinku-kumar-psl <[email protected]>

* data config reviewed code added

Signed-off-by: Deepak Nevde <[email protected]>

* Text correction

Signed-off-by: Deepak Nevde <[email protected]>

* Conflicts resolved

Signed-off-by: Deepak Nevde <[email protected]>

* table view: eui table replaced with ag-grid

Signed-off-by: Ramneet Chopra <[email protected]>

* drag-drop issue fixed

Signed-off-by: Ramneet Chopra <[email protected]>

* test case of data_table updated

Signed-off-by: Ramneet Chopra <[email protected]>

* feedback comments resolved

Signed-off-by: Ramneet Chopra <[email protected]>

* grid height issue:fixed

Signed-off-by: Ramneet Chopra <[email protected]>

* column height, value getter for type double

Signed-off-by: Ramneet Chopra <[email protected]>

* data_table elements moved to separate

Signed-off-by: Ramneet Chopra <[email protected]>

* footer components

Signed-off-by: Ramneet Chopra <[email protected]>

* cypress test cases for table view

Signed-off-by: Ramneet Chopra <[email protected]>

* enhancement for heatmap with new UI

Signed-off-by: Shankha Das <[email protected]>

* line chart test cases

Signed-off-by: Shankha Das <[email protected]>

* console logs removed

Signed-off-by: Shankha Das <[email protected]>

* updated value options ui for treemap

Signed-off-by: Mrunal Zambre <[email protected]>

* removed console

Signed-off-by: Mrunal Zambre <[email protected]>

* Fixes of sprint1 for new ui implementation (#12)

Signed-off-by: ruchika-narang <[email protected]>

Co-authored-by: rinku-kumar-psl <[email protected]>
Co-authored-by: Deepak Nevde <[email protected]>
Co-authored-by: Ramneet Chopra <[email protected]>
Co-authored-by: Shankha Das <[email protected]>
Co-authored-by: Mrunal Zambre <[email protected]>
Co-authored-by: ruchika-narang <[email protected]>

* Latest code added

Signed-off-by: Deepak Nevde <[email protected]>

* Collapsapable button position change to top

Signed-off-by: Deepak Nevde <[email protected]>

* table view: eui table replaced with ag-grid

Signed-off-by: Ramneet Chopra <[email protected]>

* drag-drop issue fixed

Signed-off-by: Ramneet Chopra <[email protected]>

* test case of data_table updated

Signed-off-by: Ramneet Chopra <[email protected]>

* feedback comments resolved

Signed-off-by: Ramneet Chopra <[email protected]>

* grid height issue:fixed

Signed-off-by: Ramneet Chopra <[email protected]>

* column height, value getter for type double

Signed-off-by: Ramneet Chopra <[email protected]>

* data_table elements moved to separate

Signed-off-by: Ramneet Chopra <[email protected]>

* footer components

Signed-off-by: Ramneet Chopra <[email protected]>

* cypress test cases for table view

Signed-off-by: Ramneet Chopra <[email protected]>

* data config reviewed code added

Signed-off-by: Deepak Nevde <[email protected]>

* Text correction

Signed-off-by: Deepak Nevde <[email protected]>

* Conflicts resolved

Signed-off-by: Deepak Nevde <[email protected]>

* enhancement for heatmap with new UI

Signed-off-by: Shankha Das <[email protected]>

* line chart test cases

Signed-off-by: Shankha Das <[email protected]>

* console logs removed

Signed-off-by: Shankha Das <[email protected]>

* updated value options ui for treemap

Signed-off-by: Mrunal Zambre <[email protected]>

* removed console

Signed-off-by: Mrunal Zambre <[email protected]>

* sprint1-visualization-fixes.

Signed-off-by: abasatwar <[email protected]>

* added colorscale config options for treemap

Signed-off-by: Mrunal Zambre <[email protected]>

* code review comment resolved

Signed-off-by: Deepak Nevde <[email protected]>

* added config option to sort treemap sectors

Signed-off-by: Mrunal Zambre <[email protected]>

* changes to resctct duplicte options

Signed-off-by: rinku-kumar-psl <[email protected]>

* Updated and Added test scripts for Treemap chart along with data config and worked on reassembling the event_constants.js file

Signed-off-by: Pratibha Pandey <[email protected]>

* Removed unwanted code

Signed-off-by: Pratibha Pandey <[email protected]>

* implementation of histogram with new UI

Signed-off-by: ruchika-narang <[email protected]>

* gauge chart added

Signed-off-by: Ramneet Chopra <[email protected]>

* Pie chart enhancement, multi labels change

Signed-off-by: Deepak Nevde <[email protected]>

* threshold text fix

Signed-off-by: Ramneet Chopra <[email protected]>

* cypress test cases added

Signed-off-by: Ramneet Chopra <[email protected]>

* Code review comment resolved

Signed-off-by: Deepak Nevde <[email protected]>

* reset fixed, unused imports removed, PR checks fixed

Signed-off-by: Ramneet Chopra <[email protected]>

* single timestamp dimension, no data dsiplay, label rotate, label/legend size

Signed-off-by: Ramneet Chopra <[email protected]>

* layout fixed for primary y axis

Signed-off-by: Ramneet Chopra <[email protected]>

* change of screen size of no data found and visualization

Signed-off-by: Shankha Das <[email protected]>

* changes for restriction of duplicate fields on Data Config and only numeric field selection to metrics

Signed-off-by: rinku-kumar-psl <[email protected]>

* line label replaced with time series

Signed-off-by: Ramneet Chopra <[email protected]>

* snapshot tests

Signed-off-by: Ramneet Chopra <[email protected]>

* Removed unwanted spaces

Signed-off-by: Pratibha Pandey <[email protected]>

* initialize default params for DimensonComponent and formatted the codes

Signed-off-by: rinku-kumar-psl <[email protected]>

* pr review feedback

Signed-off-by: Ramneet Chopra <[email protected]>

* updated preview functionality for charts

Signed-off-by: Mrunal Zambre <[email protected]>

* updated snapshots

Signed-off-by: Mrunal Zambre <[email protected]>

* Worked on review comments

Signed-off-by: Pratibha Pandey <[email protected]>

* changed variable names

Signed-off-by: Mrunal Zambre <[email protected]>

* code review changes done

Signed-off-by: rinku-kumar-psl <[email protected]>

* added empty line at end.

Signed-off-by: abasatwar <[email protected]>

* updated variable names

Signed-off-by: Mrunal Zambre <[email protected]>

* updated snapshots

Signed-off-by: Mrunal Zambre <[email protected]>

* Added pie chart test cases

Signed-off-by: Pratibha Pandey <[email protected]>

* updated snapshots

Signed-off-by: ruchika-narang <[email protected]>

* Removed consoles

Signed-off-by: ruchika-narang <[email protected]>

* Worked on conflicts

Signed-off-by: Pratibha Pandey <[email protected]>

* color selector added

Signed-off-by: Ramneet Chopra <[email protected]>

* updated snapshots

Signed-off-by: ruchika-narang <[email protected]>

* UI updated as recommended

Signed-off-by: Shankha Das <[email protected]>

* Added legend to heatmap

Signed-off-by: ruchika-narang <[email protected]>

* data_config_panel_item timeseries code removed

Signed-off-by: Ramneet Chopra <[email protected]>

* bar chart with multiple dimension and metrics, timestamp

Signed-off-by: abasatwar <[email protected]>

* limit no. of gauge option added

Signed-off-by: Ramneet Chopra <[email protected]>

* threshold limit added, gauge default parameters moved to constants/explorer

Signed-off-by: Ramneet Chopra <[email protected]>

* legend placement added

Signed-off-by: Ramneet Chopra <[email protected]>

* yarn test

Signed-off-by: Ramneet Chopra <[email protected]>

* snapshot updated

Signed-off-by: abasatwar <[email protected]>

* snapshot updated

Signed-off-by: abasatwar <[email protected]>

* Resolving issues after removal of preview functionality

Signed-off-by: ruchika-narang <[email protected]>

* updated snapshots

Signed-off-by: ruchika-narang <[email protected]>

* Updated snapshots

Signed-off-by: ruchika-narang <[email protected]>

* changes for default timestamp data for time-series and corner cases

Signed-off-by: rinku-kumar-psl <[email protected]>

* code review comment addressed

Signed-off-by: rinku-kumar-psl <[email protected]>

* pr feedback

Signed-off-by: Ramneet Chopra <[email protected]>

* dimensions, metrics length checks refined

Signed-off-by: Ramneet Chopra <[email protected]>

* updated as per review comments

Signed-off-by: abasatwar <[email protected]>

* fixing of data config corner cases

Signed-off-by: rinku-kumar-psl <[email protected]>

* snapshot updated

Signed-off-by: abasatwar <[email protected]>

* pr feedback

Signed-off-by: Ramneet Chopra <[email protected]>

Co-authored-by: rinku-kumar-psl <[email protected]>
Co-authored-by: Deepak Nevde <[email protected]>
Co-authored-by: Ramneet Chopra <[email protected]>
Co-authored-by: Shankha Das <[email protected]>
Co-authored-by: Mrunal Zambre <[email protected]>
Co-authored-by: ruchika-narang <[email protected]>
Co-authored-by: Pratibha Pandey <[email protected]>
Co-authored-by: ruchika-narang <[email protected]>
Co-authored-by: Shankha Das <[email protected]>

Co-authored-by: rinku-kumar-psl <[email protected]>
Co-authored-by: Deepak Nevde <[email protected]>
Co-authored-by: Ramneet Chopra <[email protected]>
Co-authored-by: Shankha Das <[email protected]>
Co-authored-by: Mrunal Zambre <[email protected]>
Co-authored-by: ruchika-narang <[email protected]>
Co-authored-by: Pratibha Pandey <[email protected]>
Co-authored-by: ruchika-narang <[email protected]>
Co-authored-by: Shankha Das <[email protected]>

* Staging for version increment automation (#848)

* Version increment automation

Signed-off-by: pgodithi <[email protected]>

* Version increment automation

Signed-off-by: pgodithi <[email protected]>

* Version increment automation: task rename updateVersion

Signed-off-by: pgodithi <[email protected]>

* Release Notes for 2.2.0 (#920)

Signed-off-by: vamsi-amazon <[email protected]>

* Sprint2 code refactoring and warning minimization (#904)

* changes to remove for unique key warning on Dom and code refactoring sprint2

Signed-off-by: rinku-kumar-psl <[email protected]>

* snapshot updated

Signed-off-by: rinku-kumar-psl <[email protected]>

* no_results.test.tsx snapshot updated

Signed-off-by: rinku-kumar-psl <[email protected]>

* added empty line at the end of the file

Signed-off-by: rinku-kumar-psl <[email protected]>

* Bump to 2.2.0 (#918) (#928)

* Bump to 2.2.0

Signed-off-by: vamsi-amazon <[email protected]>

* Update snapshots

Signed-off-by: Joshua Li <[email protected]>

Co-authored-by: Joshua Li <[email protected]>
(cherry picked from commit 9698c79c0742047f9ef7429a9e8d05525a2b3b62)

Co-authored-by: vamsi-amazon <[email protected]>

* Sprint3 alpha (#64) (#931)

* Sprint3 alpha (#64)

Signed-off-by: abasatwar <[email protected]>

* issues resolved and snapshots updated

Signed-off-by: Shankha Das <[email protected]>

* 2 snapshots updated

Signed-off-by: Shankha Das <[email protected]>

Signed-off-by: abasatwar <[email protected]>
Signed-off-by: Shankha Das <[email protected]>
Co-authored-by: Shankha Das <[email protected]>

* [ENHANCEMENT]: Movement of temporary visualization panel data into userconfig (#929)

* Worked on movement of data to userConfigs

Signed-off-by: ruchika-narang <[email protected]>

* Updated snapshots

Signed-off-by: ruchika-narang <[email protected]>

* Updated snapshots

Signed-off-by: ruchika-narang <[email protected]>

* Updated snapshots for failing checks

Signed-off-by: ruchika-narang <[email protected]>

* resolved PR comments

Signed-off-by: Shankha Das <[email protected]>

* visType added

Signed-off-by: Shankha Das <[email protected]>

Signed-off-by: ruchika-narang <[email protected]>
Signed-off-by: Shankha Das <[email protected]>
Co-authored-by: Shankha Das <[email protected]>

* cypress test case for horizontal bar (#935)

Signed-off-by: nidhisinghai <[email protected]>

Signed-off-by: nidhisinghai <[email protected]>
Co-authored-by: nidhisinghai <[email protected]>

* build error resolve (#923)

Signed-off-by: nidhisinghai <[email protected]>

Signed-off-by: nidhisinghai <[email protected]>
Co-authored-by: nidhisinghai <[email protected]>

* [BUG] : Dimensions getting removed when no timeseries field is present (#944)

* Fix for app crash and dimension disaapearing

Signed-off-by: ruchika-narang <[email protected]>

* optimized the code and updated snapshots

Signed-off-by: Shankha Das <[email protected]>

* resolved PR comments

Signed-off-by: Shankha Das <[email protected]>

Signed-off-by: ruchika-narang <[email protected]>
Signed-off-by: Shankha Das <[email protected]>
Co-authored-by: Shankha Das <[email protected]>

* cypress test case for scatter chart (#930)

Signed-off-by: nidhisinghai <[email protected]>

Signed-off-by: nidhisinghai <[email protected]>
Co-authored-by: nidhisinghai <[email protected]>

* Bug/logs-view-data-config: Added Columns in Data Configuration for Logs View (#955)

* Fix for app crash and dimension disaapearing

Signed-off-by: ruchika-narang <[email protected]>

* optimized the code and updated snapshots

Signed-off-by: Shankha Das <[email protected]>

* resolved PR comments

Signed-off-by: Shankha Das <[email protected]>

* resolved data configuration bug for logs view

Signed-off-by: Shankha Das <[email protected]>

Signed-off-by: ruchika-narang <[email protected]>
Signed-off-by: Shankha Das <[email protected]>
Co-authored-by: ruchika-narang <[email protected]>

* Feature/tooltip-section: Added tooltip options for various charts (#952)

* Fix for app crash and dimension disaapearing

Signed-off-by: ruchika-narang <[email protected]>

* optimized the code and updated snapshots

Signed-off-by: Shankha Das <[email protected]>

* resolved PR comments

Signed-off-by: Shankha Das <[email protected]>

* added tooltip options

Signed-off-by: Shankha Das <[email protected]>

* removed log

Signed-off-by: Shankha Das <[email protected]>

Signed-off-by: ruchika-narang <[email protected]>
Signed-off-by: Shankha Das <[email protected]>
Co-authored-by: ruchika-narang <[email protected]>

* resolved color theme issue (#960)

Signed-off-by: Shankha Das <[email protected]>

Signed-off-by: Shankha Das <[email protected]>

* Renamed data panel to style (#964)

Signed-off-by: ruchika-narang <[email protected]>

Signed-off-by: ruchika-narang <[email protected]>

* Query Manager (#915)

* Bump prismjs from 1.25.0 to 1.27.0 in /dashboards-observability (#508) (#574)

Bumps [prismjs](https://github.com/PrismJS/prism) from 1.25.0 to 1.27.0.
- [Release notes](https://github.com/PrismJS/prism/releases)
- [Changelog](https://github.com/PrismJS/prism/blob/master/CHANGELOG.md)
- [Commits](https://github.com/PrismJS/prism/compare/v1.25.0...v1.27.0)

---
updated-dependencies:
- dependency-name: prismjs
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <[email protected]>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
(cherry picked from commit f85aecf303f0d3f549339752feb9738e5cd42a7f)

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* change to support java 8 in compile and runtime (#575) (#576)

Signed-off-by: Zhongnan Su <[email protected]>
(cherry picked from commit a123560cbca753552d135078ba4f59c3a0e4a64e)

Co-authored-by: Zhongnan Su <[email protected]>

* Add 1.3.0 release notes (#580) (#582)

Signed-off-by: Eugene Lee <[email protected]>

* query manager

Signed-off-by: Eric Wei <[email protected]>

* removed aggregations from dimensions

Signed-off-by: Eric Wei <[email protected]>

* qm improvements

Signed-off-by: Eric Wei <[email protected]>

* types/code cleanups/error corrections

Signed-off-by: Eric Wei <[email protected]>

* fixed a undefined issue

Signed-off-by: Eric Wei <[email protected]>

* qm fixes for query builder

Signed-off-by: Eric Wei <[email protected]>

* viz timestamp selector

Signed-off-by: Eric Wei <[email protected]>

* use postinstall for antlr output files

Signed-off-by: Eric Wei <[email protected]>

* query building fixes

Signed-off-by: Eric Wei <[email protected]>

* updated snapshots

Signed-off-by: Eric Wei <[email protected]>

* remove output files

Signed-off-by: Eric Wei <[email protected]>

* cherry-pick from integration branch

Signed-off-by: Eric Wei <[email protected]>

* explicitly remove generated files

Signed-off-by: Eric Wei <[email protected]>

Signed-off-by: Eugene Lee <[email protected]>
Signed-off-by: Eric Wei <[email protected]>
Co-authored-by: opensearch-trigger-bot[bot] <98922864+opensearch-trigger-bot[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Zhongnan Su <[email protected]>

* Query manager integration (#987)

* Bump prismjs from 1.25.0 to 1.27.0 in /dashboards-observability (#508) (#574)

Bumps [prismjs](https://github.com/PrismJS/prism) from 1.25.0 to 1.27.0.
- [Release notes](https://github.com/PrismJS/prism/releases)
- [Changelog](https://github.com/PrismJS/prism/blob/master/CHANGELOG.md)
- [Commits](https://github.com/PrismJS/prism/compare/v1.25.0...v1.27.0)

---
updated-dependencies:
- dependency-name: prismjs
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <[email protected]>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
(cherry picked from commit f85aecf303f0d3f549339752feb9738e5cd42a7f)

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* change to support java 8 in compile and runtime (#575) (#576)

Signed-off-by: Zhongnan Su <[email protected]>
(cherry picked from commit a123560cbca753552d135078ba4f59c3a0e4a64e)

Co-authored-by: Zhongnan Su <[email protected]>

* Add 1.3.0 release notes (#580) (#582)

Signed-off-by: Eugene Lee <[email protected]>

* query manager

Signed-off-by: Eric Wei <[email protected]>

* removed aggregations from dimensions

Signed-off-by: Eric Wei <[email protected]>

* qm improvements

Signed-off-by: Eric Wei <[email protected]>

* types/code cleanups/error corrections

Signed-off-by: Eric Wei <[email protected]>

* qm fixes for query builder

Signed-off-by: Eric Wei <[email protected]>

* viz timestamp selector

Signed-off-by: Eric Wei <[email protected]>

* query manager integration with bar step 1

Signed-off-by: Eric Wei <[email protected]>

* span fix

Signed-off-by: Eric Wei <[email protected]>

* use postinstall for antlr output files

Signed-off-by: Eric Wei <[email protected]>

* query building fix

Signed-off-by: Eric Wei <[email protected]>

* updated snapshots

Signed-off-by: Eric Wei <[email protected]>

* fixed file not found issue

Signed-off-by: Eric Wei <[email protected]>

* remove output files

Signed-off-by: Eric Wei <[email protected]>

Signed-off-by: Eugene Lee <[email protected]>
Signed-off-by: Eric Wei <[email protected]>
Co-authored-by: opensearch-trigger-bot[bot] <98922864+opensearch-trigger-bot[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Zhongnan Su <[email protected]>

* Bug/color-theme-options: Resolved color theme issue #960 (#971)

* Resolved to show only metrics in the dropdown instead of all the fields

Signed-off-by: ruchika-narang <[email protected]>

* Removed unncessary import

Signed-off-by: ruchika-narang <[email protected]>

* Updated snapshots after rebasing with main

Signed-off-by: ruchika-narang <[email protected]>

Signed-off-by: ruchika-narang <[email protected]>

* cypress box plot (#983)

* cypress box plot

Signed-off-by: nidhisinghai <[email protected]>

* cypress box plot new

Signed-off-by: nidhisinghai <[email protected]>

Signed-off-by: nidhisinghai <[email protected]>
Co-authored-by: nidhisinghai <[email protected]>

* fix: reset fontSize on click of reset (#986)

Signed-off-by: SivaprasadAluri <[email protected]>

Signed-off-by: SivaprasadAluri <[email protected]>

* Cypress automation for Logs view (#995)

* Added cypress scripts for Logs view

Signed-off-by: Pratibha Pandey <[email protected]>

* Added screenshots files

Signed-off-by: Pratibha Pandey <[email protected]>

* Added snapshots files

Signed-off-by: Pratibha Pandey <[email protected]>

Signed-off-by: Pratibha Pandey <[email protected]>

* release notes for 2.3.0 (#1003)

Signed-off-by: Eric Wei <[email protected]>

Signed-off-by: Eric Wei <[email protected]>

* Resolving conflicts after merge of antlr code (#1021)

* Resolved initial render of bar chart

Signed-off-by: ruchika-narang <[email protected]>

* Made the charts workable after merging of antlr code to main

Signed-off-by: ruchika-narang <[email protected]>

* Changes of condition for userconfigs

Signed-off-by: ruchika-narang <[email protected]>

* Worked on line chart, treemap with the new antlr code

Signed-off-by: ruchika-narang <[email protected]>

Signed-off-by: ruchika-narang <[email protected]>

* tooltip for multiple traces: fixed (#1019)

Signed-off-by: Ramneet Chopra <[email protected]>

Signed-off-by: Ramneet Chopra <[email protected]>

* Cypress automation for Pie chart (#1017)

* Added cypress scripts for Logs view

Signed-off-by: Pratibha Pandey <[email protected]>

* Added screenshots files

Signed-off-by: Pratibha Pandey <[email protected]>

* Added snapshots files

Signed-off-by: Pratibha Pandey <[email protected]>

* Added Pie chart file and cypress test cases

Signed-off-by: Pratibha Pandey <[email protected]>

* Small name change

Signed-off-by: Pratibha Pandey <[email protected]>

* Added pie chart test cases

Signed-off-by: Pratibha Pandey <[email protected]>

* Added snapshots files

Signed-off-by: Pratibha Pandey <[email protected]>

Signed-off-by: Pratibha Pandey <[email protected]>

* fix#921-README-forum-link-observability (#999)

Signed-off-by: cwillum <[email protected]>

Signed-off-by: cwillum <[email protected]>

* Update developer guide (#961)

* Update developer guide

Signed-off-by: Joshua Li <[email protected]>

* Update wording

Signed-off-by: Joshua Li <[email protected]>

Signed-off-by: Joshua Li <[email protected]>

* Cypress Automation for Stats Chart (#1016)

* Added new branch code for cypress stats chart

Signed-off-by: Naman Chaturvedi <[email protected]>

* Added screenshots files

Signed-off-by: Naman Chaturvedi <[email protected]>

Signed-off-by: Naman Chaturvedi <[email protected]>

* Jest test cases (#985)

* gauge chart test case added, event-anlytics utils test case added

Signed-off-by: Ramneet Chopra <[email protected]>

* build error resolve: updated snapshots

Signed-off-by: Ramneet Chopra <[email protected]>

Signed-off-by: Ramneet Chopra <[email protected]>

* [Bug]: Date Histogram 2 way sync issue fix (#1033)

* Date-histogram 2 way sync issue fixed

Signed-off-by: Dipra Aich <[email protected]>

* Test run snapshot update changes

Signed-off-by: Dipra Aich <[email protected]>

Signed-off-by: Dipra Aich <[email protected]>

* [Feature]: Heatmap 2way sync (#1031)

* Heatmap doesnt render if more than 1 metric or 2 dimensions are added

Signed-off-by: Dipra Aich <[email protected]>

* Test cases resolution

Signed-off-by: Dipra Aich <[email protected]>

* Eliminated unnecessary commented code

Signed-off-by: Dipra Aich <[email protected]>

Signed-off-by: Dipra Aich <[email protected]>

* fixed backspace crashing UI issue (#1034)

Signed-off-by: Vishal Kushwah <[email protected]>

Signed-off-by: Vishal Kushwah <[email protected]>
Co-authored-by: Vishal Kushwah <[email protected]>

* [Feature]: Timeseries/Scatter 2 way sync (#1030)

* Fixed 2 way sync issues for line

Signed-off-by: ruchika-narang <[email protected]>

* Updated snapshots

Signed-off-by: ruchika-narang <[email protected]>

* Removed extra line

Signed-off-by: ruchika-narang <[email protected]>

Signed-off-by: ruchika-narang <[email protected]>

* Move qm to plugins #1023 (#1036)

* move qm: in progress

Signed-off-by: Ramneet Chopra <[email protected]>

* qm instances prop adedd + yarn test

Signed-off-by: Ramneet Chopra <[email protected]>

* main rebase

Signed-off-by: Ramneet Chopra <[email protected]>

* explorereFields type fixed

Signed-off-by: Ramneet Chopra <[email protected]>

* querymanager types added, renamed to qm

Signed-off-by: Ramneet Chopra <[email protected]>

Signed-off-by: Ramneet Chopra <[email protected]>

* Pie chart 2way sync (#1029)

* mode bug fixed code: added, 2 way changes testing: in progress

Signed-off-by: Ramneet Chopra <[email protected]>

* pie two sync done

Signed-off-by: Ramneet Chopra <[email protected]>

* yarn test

Signed-off-by: Ramneet Chopra <[email protected]>

* pr feedback

Signed-off-by: Ramneet Chopra <[email protected]>

* spaces added in between lines

Signed-off-by: Ramneet Chopra <[email protected]>

* usememo removed from xlables

Signed-off-by: Ramneet Chopra <[email protected]>

Signed-off-by: Ramneet Chopra <[email protected]>

* [BUG]: Revert code for treemap and histogram. (#1037)

* Revert code for histogram and treemap after antlr merge because of crashes in app

Signed-off-by: ruchika-narang <[email protected]>

* Fixes after rebasing …
Showing 257 changed files with 73,062 additions and 19,812 deletions.
498 changes: 459 additions & 39 deletions .cypress/integration/1_event_analytics.spec.js

Large diffs are not rendered by default.

34 changes: 34 additions & 0 deletions .cypress/integration/2_notebooks.spec.js
Original file line number Diff line number Diff line change
@@ -12,6 +12,8 @@ import {
SAMPLE_URL,
SQL_QUERY_TEXT,
PPL_QUERY_TEXT,
NOTEBOOK_TEXT,
OPENSEARCH_URL,
} from '../utils/constants';

import { SAMPLE_PANEL } from '../utils/panel_constants';
@@ -63,6 +65,13 @@ describe('Testing notebooks table', () => {
cy.visit(`${Cypress.env('opensearchDashboards')}/app/observability-dashboards#/notebooks`);
});

it('Notebooks table empty state', () => {
cy.get('#notebookArea').contains('Notebooks (0)').should('exist');
cy.get('.euiTextAlign.euiTextAlign--center').contains('No notebooks');
cy.get('.euiButton__text').eq(2).contains('Create notebook');
cy.get('.euiButton__text').eq(3).contains('Add samples');
});

it('Displays error toast for invalid notebook name', () => {
cy.get('.euiButton__text').contains('Create notebook').click();
cy.wait(delay);
@@ -125,6 +134,21 @@ describe('Testing notebooks table', () => {
.should('exist');
});

it('Notebooks table columns headers and pagination', () => {
cy.get('.euiTitle.euiTitle--small').contains('Notebooks').should('exist');
cy.get('.euiTableCellContent__text[title="Name"]').should('exist');
cy.get('.euiTableCellContent__text[title="Last updated"]').should('exist');
cy.get('.euiTableCellContent__text[title="Created"]').should('exist');
cy.get('[data-test-subj="tablePaginationPopoverButton"]').should('exist');
});

it('"Learn more" link under Notebooks header', () => {
cy.get('.euiTitle.euiTitle--small').contains('Notebooks');
cy.get('.euiTextColor.euiTextColor--subdued').contains(NOTEBOOK_TEXT);
cy.get('a.euiLink.euiLink--primary').contains('Learn more').click();
cy.get(`a[href="${OPENSEARCH_URL}"]`).should('exist');
});

it('Deletes notebooks', () => {
cy.get('.euiCheckbox__input[data-test-subj="checkboxSelectAll"]').click();
cy.wait(delay);
@@ -231,6 +255,16 @@ describe('Testing paragraphs', () => {
cy.get('.euiTitle').contains('Event analytics').should('exist');
});

it('Paragraph actions layout', () => {
cy.get('button[data-test-subj="notebook-paragraph-actions-button"]').should('exist').click();
cy.get('.euiContextMenuPanelTitle').contains('Actions');
cy.get('.euiContextMenuItem__text').eq(0).contains('Add paragraph to top');
cy.get('.euiContextMenuItem__text').eq(1).contains('Add paragraph to bottom');
cy.get('.euiContextMenuItem__text').eq(2).contains('Run all paragraphs');
cy.get('.euiContextMenuItem__text').eq(3).contains('Clear all outputs');
cy.get('.euiContextMenuItem__text').eq(4).contains('Delete all paragraphs');
});

it('Renders markdown', () => {
cy.get('.euiTextArea').should('not.exist');
cy.get(`a[href="${SAMPLE_URL}"]`).should('exist');
33 changes: 2 additions & 31 deletions .cypress/integration/3_panels.spec.js
Original file line number Diff line number Diff line change
@@ -502,37 +502,7 @@ describe('Testing a panel', () => {
});
});

describe('Add samples and clean up all test data', () => {
it('Add sample data', () => {
moveToPanelHome();
cy.get('.euiButton__text').contains('Actions').trigger('mouseover').click();
cy.wait(delay);
cy.get('.euiContextMenuItem__text').contains('Add samples').trigger('mouseover').click();
cy.wait(delay * 3);
cy.get('.euiModalHeader__title[data-test-subj="confirmModalTitleText"]')
.contains('Add samples')
.should('exist');
cy.wait(delay);
cy.get('.euiButton__text').contains('Yes').trigger('mouseover').click();
cy.wait(delay * 5);
cy.route2('POST', '/addSamplePanels').as('removePage');
cy.wait('@removePage').then(() => {
cy.get('.euiTableCellContent').contains(SAMPLE_PANEL).should('exist');
});
cy.wait(delay);
});

it('Validate sample data', () => {
moveToPanelHome();
cy.get('.euiTableCellContent').contains(SAMPLE_PANEL).trigger('mouseover').click();
cy.wait(delay * 3);
cy.get('h1').contains(SAMPLE_PANEL).should('exist');
cy.wait(delay);
SAMPLE_VISUALIZATIONS_NAMES.forEach((vizName) =>
cy.get('h5').contains(vizName).should('exist')
);
cy.wait(delay);
});
describe('Clean up all test data', () => {

it('Delete visualizations from event analytics', () => {
moveToEventsHome();
@@ -572,3 +542,4 @@ describe('Add samples and clean up all test data', () => {
cy.get('.euiTextAlign').contains('No Operational Panels').should('exist');
});
});

105 changes: 105 additions & 0 deletions .cypress/integration/4_trace_analytics_dashboard.spec.js
Original file line number Diff line number Diff line change
@@ -187,3 +187,108 @@ describe('Testing plots', () => {
cy.get('text.annotation-text[data-unformatted="Now: 108"]').should('exist');
});
});

describe('Latency by trace group table', () =>{
beforeEach(() => {
cy.visit('app/observability-dashboards#/trace_analytics/home', {
onBeforeLoad: (win) => {
win.sessionStorage.clear();
},
});
setTimeFilter();
});

it('Verify columns in Latency by trace group table along with pagination functionality', () => {
cy.get('span.panel-title').eq(0).should('exist');
cy.wait(delay);
cy.get('span[title="Trace group name"]').should('exist');
cy.get('span[title="Latency variance (ms)"]').should('exist');
cy.get('span[title="Average latency (ms)"]').should('exist');
cy.get('span[title="24-hour latency trend"]').should('exist');
cy.get('span[title="Error rate"] .euiToolTipAnchor').should('exist');
cy.get('span[title="Traces"] .euiToolTipAnchor').should('exist');
cy.get('[data-test-subj="tablePaginationPopoverButton"]').click();
cy.get('.euiIcon.euiIcon--medium.euiIcon--inherit.euiContextMenu__icon').eq(0).should('exist').click();
cy.get('[data-test-subj="pagination-button-next"]').should('exist').click();
cy.get('button[data-test-subj="dashboard-table-trace-group-name-button"]').contains('mysql').should('exist');
});

it('Sorts the Latency by trace group table', () => {
cy.get('span[title*="Trace group name"]').click();
cy.get('[data-test-subj="dashboard-table-trace-group-name-button"]').eq(0).contains('/**').should('exist');
cy.wait(delay);
});

it('Verify tooltips in Latency by trace group table', () => {
cy.get('.euiIcon.euiIcon--small.euiIcon--subdued.euiIcon-isLoaded.eui-alignTop').eq(0).trigger('mouseover');
cy.contains('Traces of all requests that share a common API and operation at the start of distributed tracing instrumentation.').should('be.visible');
cy.get('.euiIcon.euiIcon--small.euiIcon--subdued.euiIcon-isLoaded.eui-alignTop').eq(1).trigger('mouseover');
cy.contains('Range of latencies for traces within a trace group in the selected time range.').should('be.visible');
cy.get('.euiIcon.euiIcon--small.euiIcon--subdued.euiIcon-isLoaded.eui-alignTop').eq(2).trigger('mouseover');
cy.contains('Average latency of traces within a trace group in the selected time range.').should('be.visible');
cy.get('.euiIcon.euiIcon--small.euiIcon--subdued.euiIcon-isLoaded.eui-alignTop').eq(3).trigger('mouseover');
cy.contains('24 hour time series view of hourly average, hourly percentile, and hourly range of latency for traces within a trace group.').should('be.visible');
cy.get('.euiIcon.euiIcon--small.euiIcon--subdued.euiIcon-isLoaded.eui-alignTop').eq(4).trigger('mouseover');
cy.contains('Error rate based on count of trace errors within a trace group in the selected time range.').should('be.visible');
cy.get('.euiIcon.euiIcon--small.euiIcon--subdued.euiIcon-isLoaded.eui-alignTop').eq(5).trigger('mouseover');
cy.contains('Count of traces with unique trace identifiers in the selected time range.').should('be.visible');
});

it('Verify Search engine on Trace dashboard', () => {
cy.get('.euiFieldSearch.euiFieldSearch--fullWidth').click().type('client_pay_order{enter}');
cy.wait(delay);
cy.get('.euiTableCellContent.euiTableCellContent--alignRight.euiTableCellContent--overflowingContent').contains('211.04').should('exist');
cy.get('button[data-test-subj="dashboard-table-trace-group-name-button"]').click();
cy.get('.euiBadge.euiBadge--hollow.euiBadge--iconRight.globalFilterItem').click();
cy.get('.euiIcon.euiIcon--medium.euiContextMenu__arrow').click();
cy.get('.euiContextMenuPanelTitle').contains('Edit filter').should('exist');
cy.get('.euiButton.euiButton--primary.euiButton--fill').click();
cy.get('.euiBadge.euiBadge--hollow.euiBadge--iconRight.globalFilterItem').click();
cy.get('.euiContextMenuItem__text').eq(1).contains('Exclude results').click();
cy.get('.euiTextColor.euiTextColor--danger').should('exist');
cy.get('.euiBadge.euiBadge--hollow.euiBadge--iconRight.globalFilterItem').click();
cy.get('.euiContextMenuItem__text').eq(1).contains('Include results').click();
cy.get('.euiBadge.euiBadge--hollow.euiBadge--iconRight.globalFilterItem').click();
cy.get('.euiContextMenuItem__text').eq(2).contains('Temporarily disable').click();
cy.get('.euiBadge.euiBadge--iconRight.globalFilterItem.globalFilterItem-isDisabled').should('exist').click();
cy.get('.euiContextMenuItem__text').eq(2).contains('Re-enable').click();
cy.get('.euiBadge.euiBadge--hollow.euiBadge--iconRight.globalFilterItem').click();
cy.get('.euiContextMenuItem__text').eq(3).contains('Delete').click();
});
});

describe('Testing filters on trace analytics page', () =>{
beforeEach(() => {
cy.visit('app/observability-dashboards#/trace_analytics/home', {
onBeforeLoad: (win) => {
win.sessionStorage.clear();
},
});
setTimeFilter();
});

it('Verify Change all filters', () =>{
cy.get('.euiButtonIcon.euiButtonIcon--primary.euiButtonIcon--empty.euiButtonIcon--xSmall').click();
cy.get('.euiContextMenuPanelTitle').contains('Change all filters').should('exist');
cy.get('.euiContextMenuItem__text').eq(0).contains('Enable all');
cy.get('.euiContextMenuItem__text').eq(1).contains('Disable all');
cy.get('.euiContextMenuItem__text').eq(2).contains('Invert inclusion');
cy.get('.euiContextMenuItem__text').eq(3).contains('Invert enabled/disabled');
cy.get('.euiContextMenuItem__text').eq(4).contains('Remove all');
})

it('Verify Add filter section', () => {
cy.get('.euiPopover.euiPopover--anchorDownLeft').contains('+ Add filter').click();
cy.get('.euiPopoverTitle').contains('Add filter').should('exist');
cy.wait(delay);
cy.get('.euiComboBox__inputWrap.euiComboBox__inputWrap--noWrap').eq(0).trigger('mouseover').click();
cy.get('.euiComboBoxOption__content').eq(1).click();
cy.get('.euiComboBox__inputWrap.euiComboBox__inputWrap--noWrap').eq(1).trigger('mouseover').click();
cy.get('.euiComboBoxOption__content').eq(2).click();
cy.get('.euiButton.euiButton--primary.euiButton--fill').contains('Save').click();
cy.get('.euiBadge__content').should('exist').click();
cy.get('.euiIcon.euiIcon--medium.euiContextMenu__arrow').click();
cy.get('[data-test-subj="filter-popover-cancel-button"]').contains('Cancel').click();
cy.get('.euiIcon.euiIcon--small.euiIcon--inherit.euiBadge__icon').click();
})
});
160 changes: 158 additions & 2 deletions .cypress/integration/5_trace_analytics_services.spec.js
Original file line number Diff line number Diff line change
@@ -5,7 +5,7 @@

/// <reference types="cypress" />

import { delay, SERVICE_NAME, SERVICE_SPAN_ID, setTimeFilter } from '../utils/constants';
import { delay, SERVICE_NAME, SERVICE_SPAN_ID, setTimeFilter, verify_traces_spans_data_grid_cols_exists, count_table_row } from '../utils/constants';

describe('Testing services table empty state', () => {
beforeEach(() => {
@@ -46,6 +46,28 @@ describe('Testing services table', () => {
cy.contains(' (1)').should('exist');
cy.contains('3.57%').should('exist');
});

it('Verify columns in Services table', () => {
cy.get('.euiFlexItem.euiFlexItem--flexGrow10 .panel-title').contains('Services').should('exist');
cy.get('.euiTableCellContent__text[title="Name"]').should('exist');
cy.get('.euiTableCellContent__text[title="Average latency (ms)"]').should('exist');
cy.get('.euiTableCellContent__text[title="Error rate"]').should('exist');
cy.get('.euiTableCellContent__text[title="Throughput"]').should('exist');
cy.get('.euiTableCellContent__text[title="No. of connected services"]').should('exist');
cy.get('.euiTableCellContent__text[title="Connected services"]').should('exist');
cy.get('.euiTableCellContent__text[title="Traces"]').should('exist');
cy.get('[data-test-subj="tablePaginationPopoverButton"]').click();
cy.get('.euiIcon.euiIcon--medium.euiIcon--inherit.euiContextMenu__icon').eq(0).should('exist').click();
cy.get('[data-test-subj="pagination-button-next"]').should('exist').click();
cy.get('.euiLink.euiLink--primary').contains('order').should('exist');
})

it('Navigate from Services to Traces', () => {
cy.get('.euiTableCellContent__text[title="Traces"]').should('exist');
cy.contains('74').should('exist').click();
cy.get('.euiText.euiText--medium .panel-title').should('exist');
cy.get('.euiBadge__childButton[data-test-subj="filterBadge"]').should('exist');
})
});

describe('Testing service view empty state', () => {
@@ -115,9 +137,143 @@ describe('Testing service view', () => {
cy.get('.euiTextColor').contains('Span ID').trigger('mouseover');
cy.get('.euiButtonIcon[aria-label="span-flyout-filter-icon"').click({ force: true });
cy.wait(delay);

cy.get('.euiBadge__text').contains('spanId: ').should('exist');
cy.get('[data-test-subj="euiFlyoutCloseButton"]').click({ force: true });
cy.contains('Spans (1)').should('exist');
});
});

describe('Testing Service map', () => {
beforeEach(() => {
cy.visit('app/observability-dashboards#/trace_analytics/services', {
onBeforeLoad: (win) => {
win.sessionStorage.clear();
},
});
setTimeFilter();
});

it('Render Service map', () => {
cy.get('.euiText.euiText--medium .panel-title').contains('Service map');
cy.get('[data-test-subj="latency"]').should('exist');
cy.get('.ytitle').contains('Latency (ms)');
cy.get('[data-text = "Error rate"]').click();
cy.contains('60%');
cy.get('[data-text = "Throughput"]').click();
cy.contains('100');
cy.get('.euiText.euiText--medium').contains('Focus on').should('exist');
cy.get('[placeholder="Service name"]').focus().type('database{enter}');
})
});

describe('Testing traces Spans table verify table headers functionality', () => {
beforeEach(() => {
cy.visit('app/observability-dashboards#/trace_analytics/services', {
onBeforeLoad: (win) => {
win.sessionStorage.clear();
},
});
setTimeFilter();
});

it('Renders the spans table and verify columns headers', () => {
cy.contains(' (8)').should('exist');
cy.contains('analytics-service, frontend-client, recommendation').should('exist');
cy.get('.euiLink.euiLink--primary').contains('authentication').should('exist').click();
cy.get('.panel-title').contains('Spans').should('exist');
cy.get('.panel-title-count').contains('5').should('exist');
verify_traces_spans_data_grid_cols_exists();
});

it('Toggle columns and verify the columns hidden text verify rows', () => {
cy.get('.euiLink.euiLink--primary').contains('authentication').should('exist').click();
cy.get('[data-test-subj = "dataGridColumnSelectorButton"]').click();
cy.get('.euiSwitch.euiSwitch--compressed.euiSwitch--mini .euiSwitch__button').eq(3).click();
cy.get('.euiButtonEmpty__text').eq(3).click().should('have.text', '2 columns hidden');
count_table_row(5);
});

it('Show all button Spans table', () => {
cy.get('.euiLink.euiLink--primary').contains('authentication').should('exist').click();
cy.get('[data-test-subj = "dataGridColumnSelectorButton"]').click();
cy.get('.euiPopoverFooter .euiFlexItem.euiFlexItem--flexGrowZero').eq(0).should('have.text', 'Show all').click();
cy.get('.euiDataGrid__focusWrap').click().should('exist');
verify_traces_spans_data_grid_cols_exists();
});

it('Hide all button Spans table', () => {
cy.get('.euiLink.euiLink--primary').contains('authentication').should('exist').click();
cy.get('[data-test-subj = "dataGridColumnSelectorButton"]').click();
cy.get('.euiPopoverFooter .euiFlexItem.euiFlexItem--flexGrowZero').eq(1).should('have.text', 'Hide all').click();
cy.get('.euiDataGrid__focusWrap').click().should('exist');
cy.get('[data-test-subj="dataGridColumnSelectorPopover"]').should('have.text', '10 columns hidden');
});

it('Render Spans table and change data table Density', () => {
cy.get('.euiLink.euiLink--primary').contains('authentication').should('exist').click();
verify_traces_spans_data_grid_cols_exists();
cy.get('.euiButtonEmpty__text').contains('Density').click();
cy.get('.euiButtonContent__icon').eq(5).click();
cy.get('.euiButtonContent__icon').eq(6).click();
cy.get('.euiButtonContent__icon').eq(7).click();
});

it('Render Spans table and and click on sort', () => {
cy.get('.euiLink.euiLink--primary').contains('authentication').should('exist').click();
verify_traces_spans_data_grid_cols_exists();
cy.get('[data-test-subj="dataGridColumnSortingButton"]').contains('Sort fields').should('exist').click();
cy.get('[data-test-subj="dataGridColumnSortingPopoverColumnSelection"]').click();
cy.get('[data-test-subj="dataGridColumnSortingPopoverColumnSelection-spanId').click();
cy.get('[data-test-subj="dataGridColumnSortingPopoverColumnSelection-parentSpanId"]').click();
cy.get('[data-test-subj="dataGridColumnSortingPopoverColumnSelection-traceId"]').click();
cy.get('[data-test-subj="dataGridColumnSortingPopoverColumnSelection-traceGroup').click();
cy.get('[data-test-subj="dataGridColumnSortingPopoverColumnSelection-durationInNanos"]').click();
cy.get('[data-test-subj="dataGridColumnSortingPopoverColumnSelection-startTime"]').click();
cy.get('[data-test-subj="dataGridColumnSortingPopoverColumnSelection-endTime').click();
cy.get('[data-test-subj="dataGridColumnSortingPopoverColumnSelection-status.code"]').click();
cy.get('.euiButtonEmpty__text').eq(5).contains('8 fields sorted').should('exist');
cy.get('[data-test-subj="dataGridColumnSortingPopoverColumnSelection"]').click();
cy.get('[data-test-subj="dataGridColumnSortingButton"]').should('exist').click();
});
});


describe('Testing traces Spans table and verify columns functionality', () => {
beforeEach(() => {
cy.visit('app/observability-dashboards#/trace_analytics/services', {
onBeforeLoad: (win) => {
win.sessionStorage.clear();
},
});
setTimeFilter();
});

it('Renders the spans table and click on first span to verify details', () => {
cy.get('.euiLink.euiLink--primary').contains('authentication').should('exist').click();
verify_traces_spans_data_grid_cols_exists();
cy.get('.euiLink--primary').eq(4).click();
cy.get('[data-test-subj="spanDetailFlyout"] .euiTitle.euiTitle--medium').contains('Span detail').should('exist');
cy.get('.euiFlyoutBody .panel-title').contains('Overview').should('exist');
cy.get('.euiTextColor.euiTextColor--subdued').contains('Span ID').should('exist');
cy.get('.euiDescriptionList__description .euiFlexItem').eq(0).contains('d03fecfa0f55b77c').should('exist');
cy.get('.euiFlyoutBody__overflowContent .panel-title').contains('Span attributes').should('exist');
cy.get('.euiDescriptionList__description .euiFlexItem').eq(0).trigger('mouseover').click();
cy.get('[aria-label="span-flyout-filter-icon"]').click();
cy.get('.euiFlyout__closeButton.euiFlyout__closeButton--inside').click();
cy.get('.euiBadge__content .euiBadge__text').contains('spanId: d03fecfa0f55b77c').should('exist');
count_table_row(1);
cy.get('[aria-label="remove current filter"]').click();
count_table_row(5);
});

it('Render Spans table and verify Column functionality', () => {
cy.get('.euiLink.euiLink--primary').contains('authentication').should('exist').click();
verify_traces_spans_data_grid_cols_exists();
cy.get('.euiDataGridHeaderCell__content').contains('Span ID').click();
cy.get('.euiListGroupItem__label').contains('Hide column').click();
cy.get('.euiDataGridHeaderCell__content').contains('Trace ID').click();
cy.get('.euiListGroupItem__label').contains('Sort A-Z').click();
cy.get('.euiDataGridHeaderCell__content').contains('Trace group').click();
cy.get('.euiListGroupItem__label').contains('Move left').click();
});
});
40 changes: 40 additions & 0 deletions .cypress/integration/6_trace_analytics_traces.spec.js
Original file line number Diff line number Diff line change
@@ -113,3 +113,43 @@ describe('Testing trace view', () => {
cy.contains('Spans (1)').should('exist');
});
});

describe('Testing traces table', () => {
beforeEach(() => {
cy.visit('app/observability-dashboards#/trace_analytics/traces', {
onBeforeLoad: (win) => {
win.sessionStorage.clear();
},
});
setTimeFilter();
});

it('Renders the traces table and verify Table Column, Pagination and Rows Data ', () => {
cy.get('.euiTableCellContent__text').contains('Trace ID').should('exist');
cy.get('.euiTableCellContent__text').contains('Trace group').should('exist');
cy.get('.euiTableCellContent__text').contains('Latency (ms)').should('exist');
cy.get('.euiTableCellContent__text').contains('Percentile in trace group').should('exist');
cy.get('.euiTableCellContent__text').contains('Errors').should('exist');
cy.get('.euiTableCellContent__text').contains('Last updated').should('exist');
cy.get('[data-test-subj="pagination-button-next"]').click();
cy.contains('client_pay_order').should('exist');
cy.get('[data-test-subj="pagination-button-previous"]').click();
cy.contains('224.99').should('exist');
cy.get('.euiButtonEmpty').contains('5').click();
cy.contains('690d3c7af1a78cf89c43e...').should('exist');
cy.contains('5be8370207cbb002a165d...').click();
cy.contains('client_create_order').should('exist');
cy.get('path[style*="rgb(116, 146, 231)"]').should('exist');
cy.go('back');
cy.wait(delay);
cy.get('.euiButtonEmpty__text').contains('Rows per page').click();
cy.get('.euiContextMenuItem__text').contains('15 rows').click();
let expected_row_count=15;
cy.get('.euiTable--auto')
.find("tr")
.then((row) => {
let total=row.length-1;
expect(total).to.equal(expected_row_count);
});
});
});
228 changes: 228 additions & 0 deletions .cypress/integration/VisualizationCharts/10_scatter_chart.spec.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,228 @@
/*
* Copyright OpenSearch Contributors
* SPDX-License-Identifier: Apache-2.0
*/

/// <reference types="cypress" />
import {
delay,
TEST_QUERIES,
querySearch,
landOnEventVisualizations
} from '../../utils/event_constants';

const numberOfWindow = 4;
const legendSize = 20;
const pointSize = 30;
const pointSizeUpdated = 35;
const lineWidth = 7;
const lineWidthUpdated = 9;
const fillOpacity = 10;
const fillOpacityUpdated = 50;
const rotateLevel = 45;
const thresholdValue = 50;

const renderScatterChart = () => {
landOnEventVisualizations();
querySearch(TEST_QUERIES[6].query, TEST_QUERIES[6].dateRangeDOM);
cy.get('[data-test-subj="configPane__vizTypeSelector"] [data-test-subj="comboBoxInput"]').type('scatter').type('{enter}');
};

describe('Render scatter chart and verify default behaviour ', () => {
beforeEach(() => {
renderScatterChart();
});

it('Render scatter chart and verify by default the data gets render', () => {
cy.get('.xy').should('exist');
});

it('Render scatter chart and verify you see data configuration panel and chart panel', () => {
cy.get('.euiPanel.euiPanel--paddingSmall').should('have.length', numberOfWindow);
cy.get('.euiTitle.euiTitle--xxsmall').contains('Data Configurations').should('exist');
cy.get('.euiTitle.euiTitle--xxsmall').contains('Dimensions').should('exist');
cy.get('.euiTitle.euiTitle--xxsmall').contains('Metrics').should('exist');
cy.get('.euiIEFlexWrapFix').contains('Panel options').click();
cy.get('.euiIEFlexWrapFix').contains('Legend').click();
cy.get('.euiIEFlexWrapFix').contains('Chart styles').click();
cy.get('.euiIEFlexWrapFix').contains('Color theme').click();
cy.get('.euiIEFlexWrapFix').contains('Thresholds').click();
cy.get('[aria-label="Press to toggle this panel"]').eq(1).click();
cy.get('[aria-label="Press to toggle this panel"]').eq(2).click();
});

it('Render scatter chart and verify the data configuration panel and chart panel are collapsable', () => {
cy.get('.euiPanel.euiPanel--paddingSmall').should('have.length', numberOfWindow);
cy.get('[aria-label="Press to toggle this panel"]').eq(1).click();
cy.get('[aria-label="Press to toggle this panel"]').eq(2).click();
});
});

describe('Render scatter chart for data configuration panel', () => {
beforeEach(() => {
renderScatterChart();
});

it('Render scatter chart and verify data config panel', () => {
cy.get('.euiComboBoxPill.euiComboBoxPill--plainText').eq(0).should('contain', 'span(timestamp,1d)');
cy.get('.euiComboBoxPill.euiComboBoxPill--plainText').eq(1).should('contain', 'count()');
});

it('Render scatter chart and verify data config panel no result found if metric is missing', () => {
cy.get('[data-test-subj="comboBoxClearButton"]').eq(1).click();
cy.get('.euiTextColor.euiTextColor--subdued').contains('No results found').should('exist');
cy.get('.euiComboBoxOption__content').contains('count()').click();
cy.get('.main-svg').contains('No results found').should('not.exist');
});
});

describe('Render scatter chart for panel options', () => {
beforeEach(() => {
renderScatterChart();
});

it('Render scatter chart and verify the title gets updated according to user input ', () => {
cy.get('input[name="title"]').type("scatter Chart");
cy.get('textarea[name="description"]').should('exist').click();
cy.get('.gtitle').contains('scatter Chart').should('exist');
});
});

describe('Render scatter chart for legend', () => {
beforeEach(() => {
renderScatterChart();
});

it('Render scatter chart and verify legends for Show and Hidden', () => {
cy.get('[data-text="Show"]').should('have.text', 'Show');
cy.get('[data-text="Show"] [data-test-subj="show"]').should('have.attr', 'checked');
cy.get('[data-text="Hidden"]').should('have.text', 'Hidden').click();
cy.get('[data-text="Hidden"] [data-test-subj="hidden"]').should('not.have.attr', 'checked');
cy.get('[data-unformatted="max(bytes)"]').should('not.exist');
});

it('Render scatter chart and verify legends for position Right and Bottom', () => {
cy.get('[data-text="Right"] [data-test-subj="v"]').should('have.attr', 'checked');
cy.get('[data-text="Bottom"]').should('have.text', 'Bottom').click();
cy.get('[data-text="Bottom"] [data-test-subj="h"]').should('not.have.attr', 'checked');
});

it('Render scatter chart and increase Legend Size', () => {
cy.get('[data-test-subj="valueFieldNumber"]').eq(0).click().type(legendSize);
cy.get('textarea[name="description"]').should('exist').click();
cy.get('.legendtext').should('have.css', 'font-size', '20px');
});
});

describe('Render scatter chart for Chart Styles ', () => {
beforeEach(() => {
renderScatterChart();
});

it('Render ltime serires and verify chart style of Marker Mode', () => {
cy.get('#configPanel__panelOptions .euiFieldText').click().type('scatter chart');
cy.get('.euiFlexItem .euiFormRow [placeholder="Description"]').click().type('This is the description for scatter chart with chart style of Points');
cy.get('[data-text="Marker"]').should('have.text', 'Marker').click();
cy.get('[data-text="Marker"] [data-test-subj="markers"]').should('have.attr', 'checked');

});

it('Render scatter chart and verify chart style of Marker Mode with larger Point size', () => {
cy.get('#configPanel__panelOptions .euiFieldText').click().type('scatter chart');
cy.get('.euiFlexItem .euiFormRow [placeholder="Description"]').click().type('This is the description for scatter chart with chart style of Points');
cy.get('[data-text="Marker"]').should('have.text', 'Marker').click();
cy.get('[data-text="Marker"] [data-test-subj="markers"]').should('have.attr', 'checked');
cy.get('input[type="range"]')
.then($el => $el[0].stepUp(pointSize))
.trigger('change')
cy.get('.euiRangeSlider').should('have.value', pointSizeUpdated)

});

it('Render scatter chart and verify chart style of Lines+Marker Mode', () => {
cy.get('#configPanel__panelOptions .euiFieldText').click().type('scatter chart');
cy.get('.euiFlexItem .euiFormRow [placeholder="Description"]').click().type('This is the description for scatter chart with chart style of Lines and Marker');
cy.get('[data-text="Lines + Markers"]').should('have.text', 'Lines + Markers').click();
cy.get('[data-text="Lines + Markers"] [data-test-subj="lines+markers"]').should('not.have.attr', 'checked');

});

it('Render scatter chart and verify chart style of Lines+Marker Mode with Line Width, Fill Opacity and Point Size', () => {
cy.get('#configPanel__panelOptions .euiFieldText').click().type('scatter chart');
cy.get('.euiFlexItem .euiFormRow [placeholder="Description"]').click().type('This is the description for scatter chart with chart style of Lines and Marker');
cy.get('[data-text="Lines + Markers"]').should('have.text', 'Lines + Markers').click();
cy.get('[data-text="Lines + Markers"] [data-test-subj="lines+markers"]').should('not.have.attr', 'checked');
cy.get('input[type="range"]').eq(0)
.then($el => $el[0].stepUp(lineWidth))
.trigger('change')
cy.get('.euiRangeSlider').eq(0).should('have.value', lineWidthUpdated)
cy.get('input[type="range"]').eq(1)
.then($el => $el[0].stepUp(fillOpacity))
.trigger('change')
cy.get('.euiRangeSlider').eq(1).should('have.value', fillOpacityUpdated)
cy.get('input[type="range"]').eq(2)
.then($el => $el[0].stepUp(pointSize))
.trigger('change')
cy.get('.euiRangeSlider').eq(2).should('have.value', pointSizeUpdated)
cy.get('input[type="range"]').eq(3)
.then($el => $el[0].stepUp(rotateLevel))
.trigger('change')
cy.get('.euiRangeSlider').eq(3).should('have.value', rotateLevel)
});
});

describe('Render scatter chart for color theme', () => {
beforeEach(() => {
renderScatterChart();
});

it('Render scatter chart and "Add Color theme"', () => {
cy.get('.euiButton__text').contains('+ Add color theme').click();
cy.wait(delay);
cy.get('[data-test-subj="comboBoxInput"]').eq(5).click();
cy.get('.euiComboBoxOption__content').contains('count()').click();
cy.get('path[style*="rgb(252, 5, 5)"]').should('exist');

});
});

describe('Render scatter chart and work with Thresholds', () => {
beforeEach(() => {
renderScatterChart();
});

it('Render scatter chart and add threshold', () => {
cy.get('.euiButton__text').contains('+ Add threshold').click();
cy.get('[data-test-subj="nameFieldText"]').type('scatter chart Threshold');
cy.get('[data-test-subj="valueFieldNumber"]').eq(1).type(thresholdValue);
cy.get('[data-unformatted="scatter chart Threshold"]').should('be.visible');
cy.get('path[style*="rgb(252, 5, 5)"]').should('exist');
});
});

describe('Render scatter chart and verify if reset works properly', () => {
beforeEach(() => {
renderScatterChart();
});

it('Render scatter chart with all feild data then click on reset and verify reset works properly', () => {
cy.get('input[placeholder="Title"]').type('scatter chart');
cy.get('textarea[placeholder="Description"]').type('Description For scatter chart');
cy.get('[data-text="Hidden"]').should('have.text', 'Hidden').click();
cy.get('[data-test-subj="valueFieldNumber"]').eq(0).click().type(legendSize);
cy.get('.euiButton__text').contains('+ Add color theme').click();
cy.wait(delay);
cy.get('[data-test-subj="comboBoxInput"]').eq(5).click();
cy.get('.euiComboBoxOption__content').contains('count()').click();
cy.get('.euiButton__text').contains('+ Add threshold').click();
cy.get('[data-test-subj="nameFieldText"]').type('scatter chart Threshold');
cy.get('[data-test-subj="valueFieldNumber"]').eq(1).type(thresholdValue);
cy.get('.euiButtonEmpty__text').contains('Reset').click();
cy.get('input[placeholder="Title"]').should('not.have.value', 'scatter chart');
cy.get('textarea[placeholder="Description"]').should('not.have.value', 'Description For scatter chart')
cy.get('[data-text="Show"] [data-test-subj="show"]').should('have.attr', 'checked');
cy.get('[data-text="Right"] [data-test-subj="v"]').should('have.attr', 'checked');
cy.get('[data-test-subj="valueFieldNumber"]').eq(0).should('have.value', '');
});
});

Original file line number Diff line number Diff line change
@@ -0,0 +1,244 @@
/*
* Copyright OpenSearch Contributors
* SPDX-License-Identifier: Apache-2.0
*/

/// <reference types="cypress" />
import {
delay,
TEST_QUERIES,
querySearch,
landOnEventVisualizations,
} from '../../utils/event_constants';

const numberOfWindow = 4;
const labelSize = 20;
const rotateLevel = 45;
const groupWidth = 10;
const groupWidthUpdated = 0.8;
const barWidth = 10;
const barWidthUpdated = 80;
const lineWidth = 7;
const lineWidthUpdated = 8;
const fillOpacity = 10;
const fillOpacityUpdated = 90;
const numberOfColor = 24;

const renderHorizontalBarChart = () => {
landOnEventVisualizations();
querySearch(TEST_QUERIES[4].query, TEST_QUERIES[4].dateRangeDOM);
cy.get('[data-test-subj="configPane__vizTypeSelector"] [data-test-subj="comboBoxInput"]')
.type('Horizontal Bar')
.type('{enter}');
};

describe('Render horizontal bar chart and verify default behaviour ', () => {
beforeEach(() => {
renderHorizontalBarChart();
});

it('Render horizontal bar chart and verify by default the data gets render', () => {
cy.get('.xy').should('exist');
});

it('Render horizontal bar chart and verify you see data configuration panel and chart panel', () => {
cy.get('.euiPanel.euiPanel--paddingSmall').should('have.length', numberOfWindow);
cy.get('.euiTitle.euiTitle--xxsmall').contains('Data Configurations').should('exist');
cy.get('.euiTitle.euiTitle--xxsmall').contains('Dimensions').should('exist');
cy.get('.euiTitle.euiTitle--xxsmall').contains('Metrics').should('exist');
cy.get('.euiIEFlexWrapFix').contains('Panel options').click();
cy.get('.euiIEFlexWrapFix').contains('Legend').click();
cy.get('.euiIEFlexWrapFix').contains('Chart styles').click();
cy.get('.euiIEFlexWrapFix').contains('Color theme').click();
cy.get('[aria-label="Press to toggle this panel"]').eq(1).click();
cy.get('[aria-label="Press to toggle this panel"]').eq(2).click();
});

it('Render horizontal bar chart and verify the data configuration panel and chart panel are collapsable', () => {
cy.get('.euiPanel.euiPanel--paddingSmall').should('have.length', numberOfWindow);
cy.get('[aria-label="Press to toggle this panel"]').eq(1).click();
cy.get('[aria-label="Press to toggle this panel"]').eq(2).click();
});
});

describe('Render horizontal bar chart for data configuration panel', () => {
beforeEach(() => {
renderHorizontalBarChart();
});

it('Render horizontal bar chart and verify data config panel', () => {
cy.get('.euiComboBoxPill.euiComboBoxPill--plainText').eq(0).should('contain', 'tags');
cy.get('.euiComboBoxPill.euiComboBoxPill--plainText').eq(1).should('contain', 'count()');
cy.get('.euiComboBoxPill.euiComboBoxPill--plainText').eq(2).should('contain', 'avg(bytes)');
cy.get('.euiComboBoxPill.euiComboBoxPill--plainText').eq(3).should('contain', 'host');
});

it('Render horizontal bar chart and verify data config panel restrict user to select a duplicate field on dimension field', () => {
cy.get('[data-test-subj="comboBoxInput"]').eq(1).click();
cy.get('[data-test-subj="comboBoxClearButton"]').eq(0).click();
cy.get('[data-test-subj="comboBoxInput"]').eq(1).click();
cy.get('.euiComboBoxOption__content').should('have.length', 1);
cy.get('.euiComboBoxOption__content').contains('tags');
});

it('Render horizontal bar chart and verify data config panel Restrict user to select a duplicate field on Metrics field', () => {
cy.get('.euiText.euiText--extraSmall').eq(1).click();
cy.get('[data-test-subj="comboBoxClearButton"]').eq(1).click();
cy.get('[data-test-subj="comboBoxInput"]').eq(3).click();
cy.get('.euiComboBoxOption__content').should('not.contain', 'tags');
cy.get('.euiComboBoxOption__content').should('have.length', 2);
});

it('Render horizontal bar chart and verify data config panel no result found if metric is missing', () => {
cy.get('.euiText.euiText--extraSmall').eq(0).click();
cy.get('.euiText.euiText--extraSmall').eq(1).click();
cy.get('[data-test-subj="comboBoxClearButton"]').eq(1).click();
cy.get('[data-test-subj="comboBoxInput"]').eq(0).click();
cy.get('.euiButton__text').contains('Update chart').click();
cy.get('.euiTextColor.euiTextColor--subdued').contains('No results found').should('exist');
cy.get('[data-test-subj="comboBoxInput"]').eq(3).click();
cy.get('.euiComboBoxOption__content').contains('avg(bytes)').click();
cy.get('.euiButton__text').contains('Update chart').click();
cy.get('.main-svg').contains('No results found').should('not.exist');
});
});

describe('Render horizontal bar chart for panel options', () => {
beforeEach(() => {
renderHorizontalBarChart();
});

it('Render horizontal bar chart and verify the title gets updated according to user input ', () => {
cy.get('input[name="title"]').type('horizontal bar chart');
cy.get('textarea[name="description"]').should('exist').click();
cy.get('.gtitle').contains('horizontal bar chart').should('exist');
});
});

describe('Render horizontal bar chart for legend', () => {
beforeEach(() => {
renderHorizontalBarChart();
});

it('Render horizontal bar chart and verify legends for Show and Hidden', () => {
cy.get('[data-text="Show"]').should('have.text', 'Show');
cy.get('[data-text="Show"] [data-test-subj="show"]').should('have.attr', 'checked');
cy.get('[data-text="Hidden"]').should('have.text', 'Hidden').click();
cy.get('[data-text="Hidden"] [data-test-subj="hidden"]').should('not.have.attr', 'checked');
cy.get('[data-unformatted="max(bytes)"]').should('not.exist');
});

it('Render horizontal bar chart and verify legends for position Right and Bottom', () => {
cy.get('[data-text="Right"]').should('have.text', 'Right');
cy.get('[data-text="Right"] [data-test-subj="v"]').should('have.attr', 'checked');
cy.get('[data-text="Bottom"]').should('have.text', 'Bottom').click();
cy.get('[data-text="Bottom"] [data-test-subj="h"]').should('not.have.attr', 'checked');
});
});

describe('Render horizontal bar chart for chart style options', () => {
beforeEach(() => {
renderHorizontalBarChart();
});

it('Render horizontal bar chart and increase Label Size ', () => {
cy.get('[data-test-subj="valueFieldNumber"]').click().type(labelSize);
cy.get('textarea[name="description"]').should('exist').click();
cy.get('[data-unformatted="login"]').should('have.css', 'font-size', '20px');
});

it('Render horizontal bar chart and "Rotate bar labels"', () => {
cy.get('input[type="range"]')
.eq(0)
.then(($el) => $el[0].stepUp(rotateLevel))
.trigger('change');
cy.get('.euiRangeSlider').eq(0).should('have.value', rotateLevel);
});

it('Render horizontal bar chart and change "Group Width"', () => {
cy.get('input[type="range"]')
.eq(1)
.then(($el) => $el[0].stepUp(groupWidth))
.trigger('change');
cy.get('.euiRangeSlider').eq(1).should('have.value', groupWidthUpdated);
});

it('Render horizontal bar chart and change "Bar Width"', () => {
cy.get('input[type="range"]')
.eq(2)
.then(($el) => $el[0].stepDown(barWidth))
.trigger('change');
cy.get('.euiRangeSlider').eq(4).should('have.value', barWidthUpdated);
});

it('Render horizontal bar chart and change "Line Width"', () => {
cy.get('input[type="range"]')
.eq(3)
.then(($el) => $el[0].stepUp(lineWidth))
.trigger('change');
cy.get('.euiRangeSlider').eq(3).should('have.value', lineWidthUpdated);
});

it('Render horizontal bar chart and change "Fill Opacity"', () => {
cy.get('input[type="range"]')
.eq(4)
.then(($el) => $el[0].stepUp(fillOpacity))
.trigger('change');
cy.get('.euiRangeSlider').eq(4).should('have.value', fillOpacityUpdated);
});
});

describe('Render horizontal bar chart for color theme', () => {
beforeEach(() => {
renderHorizontalBarChart();
});

it('Render horizontal bar chart and "Add color theme"', () => {
cy.get('.euiButton__text').contains('+ Add color theme').click();
cy.wait(delay);
cy.get('[data-test-subj="comboBoxInput"]').eq(9).click();
cy.get('.euiComboBoxOption__content').contains('avg(bytes)').click();
cy.get('.point').find('path[style*="rgb(252, 5, 5)"]').should('have.length', numberOfColor);
});
});

describe('Render horizontal bar chart and verify if reset works properly', () => {
beforeEach(() => {
renderHorizontalBarChart();
});

it('Render horizontal bar chart with all feild data then click on reset and verify reset works properly', () => {
cy.get('input[placeholder="Title"]').type('horizontal bar chart');
cy.get('textarea[placeholder="Description"]').type('Description For horizontal bar chart');
cy.get('.euiButton__text').contains('Hidden').click();
cy.get('.euiButton__text').contains('Stack').click();
cy.get('[data-test-subj="valueFieldNumber"]').click().type(labelSize);
cy.get('input[type="range"]')
.eq(0)
.then(($el) => $el[0].stepUp(rotateLevel))
.trigger('change');
cy.get('input[type="range"]')
.eq(1)
.then(($el) => $el[0].stepUp(groupWidth))
.trigger('change');
cy.get('input[type="range"]')
.eq(2)
.then(($el) => $el[0].stepDown(barWidth))
.trigger('change');
cy.get('input[type="range"]')
.eq(3)
.then(($el) => $el[0].stepUp(lineWidth))
.trigger('change');
cy.get('.euiButtonEmpty__text').contains('Reset').click();
cy.get('input[placeholder="Title"]').should('not.have.value', 'horizontal bar chart');
cy.get('textarea[placeholder="Description"]').should(
'not.have.value',
'Description For horizontal bar chart'
);
cy.get('[data-text="Show"] [data-test-subj="show"]').should('have.attr', 'checked');
cy.get('[data-text="Right"] [data-test-subj="v"]').should('have.attr', 'checked');
cy.get('[data-text="Vertical"] [data-test-subj="v"]').should('have.attr', 'checked');
cy.get('[data-text="Group"] [data-test-subj="group"]').should('have.attr', 'checked');
cy.get('[data-test-subj="valueFieldNumber"]').should('have.value', '');
});
});
248 changes: 248 additions & 0 deletions .cypress/integration/VisualizationCharts/12_boxPlot_chart.spec.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,248 @@
/*
* Copyright OpenSearch Contributors
* SPDX-License-Identifier: Apache-2.0
*/

/// <reference types="cypress" />
import {
delay,
TEST_QUERIES,
querySearch,
landOnEventVisualizations,
} from '../../utils/event_constants';

const numberOfWindow = 4;
const labelSize = 20;
const rotateLevel = 45;
const boxSize = 7;
const boxSizeUpdated = 1;
const markerSize = 5;
const markerSizeUpdated = 1;
const jitter = 2;
const jitterUpdated = .1;
const fillOpacity = 10;
const fillOpacityUpdated = 50;
const numberOfColor = 24;

const renderBoxPlot = () => {
landOnEventVisualizations();
querySearch(TEST_QUERIES[4].query, TEST_QUERIES[4].dateRangeDOM);
cy.get('[data-test-subj="configPane__vizTypeSelector"] [data-test-subj="comboBoxInput"]')
.type('Box plot')
.type('{enter}');
};

describe('Render box plot and verify default behaviour ', () => {
beforeEach(() => {
renderBoxPlot();
});

it('Render box plot and verify by default the data gets render', () => {
cy.get('.xy').should('exist');
});

it('Render box plot and verify you see data configuration panel and chart panel', () => {
cy.get('.euiPanel.euiPanel--paddingSmall').should('have.length', numberOfWindow);
cy.get('.euiTitle.euiTitle--xxsmall').contains('Data Configurations').should('exist');
cy.get('.euiTitle.euiTitle--xxsmall').contains('Dimensions').should('exist');
cy.get('.euiTitle.euiTitle--xxsmall').contains('Metrics').should('exist');
cy.get('.euiIEFlexWrapFix').contains('Panel options').click();
cy.get('.euiIEFlexWrapFix').contains('Legend').click();
cy.get('.euiIEFlexWrapFix').contains('Chart styles').click();
cy.get('.euiIEFlexWrapFix').contains('Color Theme').click();
cy.get('[aria-label="Press to toggle this panel"]').eq(1).click();
cy.get('[aria-label="Press to toggle this panel"]').eq(2).click();
});

it('Render box plot and verify the data configuration panel and chart panel are collapsable', () => {
cy.get('.euiPanel.euiPanel--paddingSmall').should('have.length', numberOfWindow);
cy.get('[aria-label="Press to toggle this panel"]').eq(1).click();
cy.get('[aria-label="Press to toggle this panel"]').eq(2).click();
});
});

describe('Render box plot for data configuration panel', () => {
beforeEach(() => {
renderBoxPlot();
});

it('Render box plot and verify data config panel', () => {
cy.get('.euiComboBoxPill.euiComboBoxPill--plainText').eq(0).should('contain', 'tags');
cy.get('.euiComboBoxPill.euiComboBoxPill--plainText').eq(1).should('contain', 'count()');
cy.get('.euiComboBoxPill.euiComboBoxPill--plainText').eq(2).should('contain', 'avg(bytes)');
cy.get('.euiComboBoxPill.euiComboBoxPill--plainText').eq(3).should('contain', 'host');
});

it('Render box plot and verify data config panel restrict user to select a duplicate field on dimension field', () => {
cy.get('[data-test-subj="comboBoxInput"]').eq(1).click();
cy.get('[data-test-subj="comboBoxClearButton"]').eq(0).click();
cy.get('[data-test-subj="comboBoxInput"]').eq(1).click();
cy.get('.euiComboBoxOption__content').should('have.length', 1);
cy.get('.euiComboBoxOption__content').contains('tags');
});

it('Render box plot and verify data config panel Restrict user to select a duplicate field on Metrics field', () => {
cy.get('.euiText.euiText--extraSmall').eq(1).click();
cy.get('[data-test-subj="comboBoxClearButton"]').eq(1).click();
cy.get('[data-test-subj="comboBoxInput"]').eq(3).click();
cy.get('.euiComboBoxOption__content').should('not.contain', 'tags');
cy.get('.euiComboBoxOption__content').should('have.length', 2);
});

it('Render box plot and verify data config panel no result found if metric is missing', () => {
cy.get('.euiText.euiText--extraSmall').eq(0).click();
cy.get('.euiText.euiText--extraSmall').eq(1).click();
cy.get('[data-test-subj="comboBoxClearButton"]').eq(1).click();
cy.get('[data-test-subj="comboBoxInput"]').eq(0).click();
cy.get('.euiButton__text').contains('Update chart').click();
cy.get('.euiTextColor.euiTextColor--subdued').contains('No results found').should('exist');
cy.get('[data-test-subj="comboBoxInput"]').eq(3).click();
cy.get('.euiComboBoxOption__content').contains('avg(bytes)').click();
cy.get('.euiButton__text').contains('Update chart').click();
cy.get('.main-svg').contains('No results found').should('not.exist');
});
});

describe('Render box plot for panel options', () => {
beforeEach(() => {
renderBoxPlot();
});

it('Render box plot and verify the title gets updated according to user input ', () => {
cy.get('input[name="title"]').type('box plot');
cy.get('textarea[name="description"]').should('exist').click();
cy.get('.gtitle').contains('box plot').should('exist');
});
});

describe('Render box plot for legend', () => {
beforeEach(() => {
renderBoxPlot();
});

it('Render box plot and verify legends for Show and Hidden', () => {
cy.get('[data-text="Show"]').should('have.text', 'Show');
cy.get('[data-text="Show"] [data-test-subj="show"]').should('have.attr', 'checked');
cy.get('[data-text="Hidden"]').should('have.text', 'Hidden').click();
cy.get('[data-text="Hidden"] [data-test-subj="hidden"]').should('not.have.attr', 'checked');
cy.get('[data-unformatted="max(bytes)"]').should('not.exist');
});

it('Render box plot and verify legends for position Right and Bottom', () => {
cy.get('[data-text="Right"]').should('have.text', 'Right');
cy.get('[data-text="Right"] [data-test-subj="v"]').should('have.attr', 'checked');
cy.get('[data-text="Bottom"]').should('have.text', 'Bottom').click();
cy.get('[data-text="Bottom"] [data-test-subj="h"]').should('not.have.attr', 'checked');
});
});

describe('Render box plot for chart style options', () => {
beforeEach(() => {
renderBoxPlot();
});

it('Render box plot and increase Label Size ', () => {
cy.get('[data-test-subj="valueFieldNumber"]').click().type(labelSize);
cy.get('textarea[name="description"]').should('exist').click();
cy.get('[data-unformatted="count()"]').should('have.css', 'font-size', '20px');
});

it('Render box plot and "Rotate box labels"', () => {
cy.get('input[type="range"]')
.eq(0)
.then(($el) => $el[0].stepUp(rotateLevel))
.trigger('change');
cy.get('.euiRangeSlider').eq(0).should('have.value', rotateLevel);
});

it('Render box plot and change "Box gap"', () => {
cy.get('input[type="range"]')
.eq(1)
.then(($el) => $el[0].stepUp(boxSize))
.trigger('change');
cy.get('.euiRangeSlider').eq(1).should('have.value', boxSizeUpdated);
});

it('Render box plot and change "Marker size"', () => {
cy.get('input[type="range"]')
.eq(2)
.then(($el) => $el[0].stepDown(markerSize))
.trigger('change');
cy.get('.euiRangeSlider').eq(2).should('have.value', markerSizeUpdated);
});

it('Render box plot and change "Jitter"', () => {
cy.get('input[type="range"]')
.eq(3)
.then(($el) => $el[0].stepDown(jitter))
.trigger('change');
cy.get('.euiRangeSlider').eq(3).should('have.value', jitterUpdated);
});

it('Render box plot and change "Fill opacity"', () => {
cy.get('input[type="range"]')
.eq(4)
.then(($el) => $el[0].stepUp(fillOpacity))
.trigger('change');
cy.get('.euiRangeSlider').eq(4).should('have.value', fillOpacityUpdated);
});
});

describe('Render box plot for color theme', () => {
beforeEach(() => {
renderBoxPlot();
});

it('Render box plot and "Add color theme"', () => {
cy.get('.euiButton__text').contains('+ Add color theme').click();
cy.wait(delay);
cy.get('[data-test-subj="comboBoxInput"]').eq(9).click();
cy.get('.euiComboBoxOption__content').contains('avg(bytes)').click();
cy.get('.points').find('path[style*="rgb(252, 5, 5)"]').should('have.length', numberOfColor);
});
});

describe('Render box plot and verify if reset works properly', () => {
beforeEach(() => {
renderBoxPlot();
});

it('Render box plot with all feild data then click on reset and verify reset works properly', () => {
cy.get('input[placeholder="Title"]').type('box plot');
cy.get('textarea[placeholder="Description"]').type('Description For box plot');
cy.get('.euiButton__text').contains('Hidden').click();
cy.get('.euiButton__text').contains('Horizontal').click();
cy.get('[data-test-subj="valueFieldNumber"]').click().type(labelSize);
cy.get('input[type="range"]')
.eq(0)
.then(($el) => $el[0].stepUp(rotateLevel))
.trigger('change');
cy.get('input[type="range"]')
.eq(1)
.then(($el) => $el[0].stepUp(boxSize))
.trigger('change');
cy.get('input[type="range"]')
.eq(2)
.then(($el) => $el[0].stepDown(markerSize))
.trigger('change');
cy.get('input[type="range"]')
.eq(3)
.then(($el) => $el[0].stepUp(jitter))
.trigger('change');
cy.get('input[type="range"]')
.eq(4)
.then(($el) => $el[0].stepUp(fillOpacity))
.trigger('change');
cy.get('.euiButtonEmpty__text').contains('Reset').click();
cy.get('input[placeholder="Title"]').should('not.have.value', 'box plot');
cy.get('textarea[placeholder="Description"]').should(
'not.have.value',
'Description For box plot'
);
cy.get('[data-text="Show"] [data-test-subj="show"]').should('have.attr', 'checked');
cy.get('[data-text="Right"] [data-test-subj="v"]').should('have.attr', 'checked');
cy.get('[data-text="Vertical"] [data-test-subj="v"]').should('have.attr', 'checked');
cy.get('[data-text="Overlay"] [data-test-subj="overlay"]').should('have.attr', 'checked');
cy.get('[data-test-subj="valueFieldNumber"]').should('have.value', '');
});
});
241 changes: 241 additions & 0 deletions .cypress/integration/VisualizationCharts/13_logsView.spec.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,241 @@
/*
* Copyright OpenSearch Contributors
* SPDX-License-Identifier: Apache-2.0
*/

/// <reference types="cypress" />
import {
delay,
TEST_QUERIES,
querySearch,
landOnEventVisualizations,
saveVisualizationAndVerify,
deleteVisualization,
} from '../../utils/event_constants';

const renderLogsView = () => {
landOnEventVisualizations();
querySearch(TEST_QUERIES[8].query, TEST_QUERIES[8].dateRangeDOM);
cy.get('[data-test-subj="configPane__vizTypeSelector"] [data-test-subj="comboBoxInput"]')
.type('Logs view')
.type('{enter}');
};

const renderLogsViewChart = () => {
landOnEventVisualizations();
querySearch(TEST_QUERIES[2].query, TEST_QUERIES[2].dateRangeDOM);
cy.get('[data-test-subj="configPane__vizTypeSelector"] [data-test-subj="comboBoxInput"]')
.type('Logs view')
.type('{enter}');
};

const fieldName = 'host';

describe('Render Logs view and verify default behavior', () => {
beforeEach(() => {
renderLogsView();
});

it('Render Logs view and verify the default data', () => {
cy.get('.logs-view-container').should('exist');
});

it('Render Logs view and verify Data Configuration panel default behavior', () => {
cy.get('.euiTitle.euiTitle--xxsmall').contains('Data Configurations').should('exist');
cy.get('.euiTitle.euiTitle--xxsmall').contains('Columns');
cy.get('.euiFormLabel.euiFormRow__label').contains('Field');
cy.get('.euiButton.euiButton--primary.euiButton--fullWidth.euiButton-isDisabled').should(
'be.disabled'
);
cy.get('[data-test-subj="visualizeEditorRenderButton"]').should('be.disabled');
});

it('Render Logs view and verify Style section for Logs view', () => {
cy.get('.vis-config-tabs .euiTab__content').contains('Style').should('exist');
cy.get('.euiAccordion__triggerWrapper').contains('Panel options').should('exist');
cy.get('#configPanel__panelOptions .euiFormRow__labelWrapper')
.contains('Title')
.should('exist');
cy.get('#configPanel__panelOptions .euiFormRow__labelWrapper')
.contains('Description')
.should('exist');
});

it('Table view should be enabled for Logs view', () => {
cy.get('.euiSwitch__label').contains('Table view').should('exist');
cy.get('[data-test-subj="workspace__dataTableViewSwitch"][aria-checked="false"]').click();
cy.get('.ag-header.ag-pivot-off').should('exist');
});

it('Verify Style section for Logs view', () => {
cy.get('#data-panel').contains('Style').should('exist');
cy.get('.euiAccordion__button').contains('Panel options').should('exist');
cy.get('#configPanel__panelOptions').contains('Title').should('exist');
cy.get('.euiFormHelpText.euiFormRow__text').contains('Name your visualization').should('exist');
cy.get('#configPanel__panelOptions').contains('Description').should('exist');
});

it('Add and Remove toggle buttons for fields section', () => {
cy.get('#available_fields').contains('Available Fields').should('exist');
cy.get('[aria-label="Add agent to table"]').should('be.disabled');
cy.get('#selected_fields').contains('Query fields').should('exist');
cy.get('[aria-label="Remove clientip from table"]').should('be.disabled');
});
});

describe('Save and Delete Visualization', () => {
beforeEach(() => {
renderLogsView();
});

it('Render Logs view, Save and Delete Visualization', () => {
saveVisualizationAndVerify();
deleteVisualization();
});
});

describe('Render Logs view with no stats section in the query', () => {
beforeEach(() => {
renderLogsViewChart();
});

it('Disabled Table view toogle button', () => {
cy.get('[data-test-subj="workspace__dataTableViewSwitch"]').should('be.disabled');
});

it('Save toast message', () => {
const vis_name_sub_string = Math.floor(Math.random() * 100);
cy.get('[data-test-subj="eventExplorer__saveManagementPopover"]').click();
cy.get('[data-test-subj="eventExplorer__querySaveComboBox"]').click();
cy.get('.euiComboBoxOptionsList__rowWrap .euiFilterSelectItem').eq(0).click();
cy.get(
'.euiPopover__panel .euiFormControlLayoutIcons [data-test-subj="comboBoxToggleListButton"]'
)
.eq(0)
.click();
cy.get('.euiPopover__panel input')
.eq(1)
.type(`Test visualization` + vis_name_sub_string);
cy.get('[data-test-subj="eventExplorer__querySaveConfirm"]').click();
cy.get('[data-test-subj="euiToastHeader"]')
.contains('There is no query or(and) visualization to save')
.should('exist');
});

it('Verify Logs view details when PPL query does not have stats section ', () => {
cy.get('[data-test-subj="docTable"]').should('exist');
cy.get('.osdDocTableHeader').contains('Time').should('exist');
cy.get('.osdDocTableHeader').contains('_source').should('exist');
});

it('Add and Remove toggle buttons for fields section should be enabled', () => {
//Add field
cy.get('[data-test-subj="fieldToggle-agent"]').click();
cy.get('[data-test-subj="field-agent"]').should('exist');
//Remove field
cy.get('[data-test-subj="fieldToggle-agent"]').click();
cy.get('[aria-labelledby="selected_fields"] [data-test-subj="field-agent-showDetails"]').should(
'not.exist'
);
});

it('Search engine for fields under Visualizations', () => {
cy.get('[data-test-subj="eventExplorer__sidebarSearch"]').should('exist').type(fieldName);
cy.get('[data-test-subj="fieldToggle-host"]').click();
cy.get('[data-test-subj="fieldList-selected"]').should('exist');
});

it('View surrounding events button enabled', () => {
cy.get('.euiIcon.euiIcon--medium.euiIcon--inherit.euiButtonIcon__icon')
.eq(2)
.click({ force: true });
cy.get('#eventsDocFyout').contains('Event Details').should('exist');
cy.get('.euiButton__text').eq(4).should('not.be.disabled');
});
});

describe('Event Details overlay', () => {
beforeEach(() => {
renderLogsView();
});

it('Verify Event Details overaly should get opened after clicking on details toggle button', () => {
cy.get('.euiIcon.euiIcon--medium.euiIcon--inherit.euiButtonIcon__icon')
.eq(2)
.click({ force: true });
cy.get('#eventsDocFyout').contains('Event Details').should('exist');
});

it('Options in Event Details overlay', () => {
cy.get('.euiIcon.euiIcon--medium.euiIcon--inherit.euiButtonIcon__icon')
.eq(2)
.click({ force: true });
cy.get('#eventsDocFyout').contains('Event Details').should('exist');
cy.get('.euiTabs .euiTab__content').contains('Table');
cy.get('.table.table-condensed.osdDocViewerTable').should('exist');
cy.get('.euiTabs .euiTab__content').contains('JSON').click();
cy.get('.euiCodeBlock__code.json').should('exist');
cy.get('.euiTabs .euiTab__content').contains('Traces').click();
cy.get('.euiCallOutHeader__title').contains('No Trace Id found in the event.').should('exist');
cy.get('.euiLink.euiLink--primary').contains('Trace Analytics').click();
cy.get('#trace-analytics').contains('Trace Analytics').should('exist');
cy.get('.euiLink.euiLink--primary').contains('Log Correlation').click();
cy.get('#log-correlation').contains('Log Correlation').should('exist');
});

it('View surrounding events button disabled', () => {
cy.get('.euiIcon.euiIcon--medium.euiIcon--inherit.euiButtonIcon__icon')
.eq(2)
.click({ force: true });
cy.get('#eventsDocFyout').contains('Event Details').should('exist');
cy.get('.euiButton.euiButton--primary.euiButton-isDisabled.header-button')
.contains('View surrounding events')
.should('be.disabled');
});

it('Event Details overlay resizable and "X" buttons', () => {
cy.get('.euiIcon.euiIcon--medium.euiIcon--inherit.euiButtonIcon__icon')
.eq(2)
.click({ force: true });
cy.get('#eventsDocFyout').contains('Event Details').should('exist');
cy.get('[title="Resize"]').click();
cy.get('.euiIcon.euiIcon--medium.euiIcon--inherit.euiButtonIcon__icon')
.eq(2)
.click({ force: true });
cy.get('#eventsDocFyout').contains('Event Details').should('exist');
cy.get('[data-test-subj="euiFlyoutCloseButton"]').should('exist').click();
});

it('Table details on Event Details overlay', () => {
cy.get('.euiIcon.euiIcon--medium.euiIcon--inherit.euiButtonIcon__icon')
.eq(2)
.click({ force: true });
cy.get('#eventsDocFyout').contains('Event Details').should('exist');
cy.get('[data-test-subj="docTable"]').should('exist');
});
});

describe('Data Configuration panel when no stats in the query', () => {
beforeEach(() => {
renderLogsViewChart();
});

it('Data Configuration panel default behavior', () => {
cy.get('.euiTitle.euiTitle--xxsmall').contains('Data Configurations').should('exist');
cy.get('.euiTitle.euiTitle--xxsmall').contains('Columns').should('exist');
cy.get('.euiButton__text').eq(2).contains('Add').should('not.be.disabled');
cy.get('.euiButton__text').eq(3).contains('Update Chart').should('not.be.disabled');
});

it('Add button in Data Configuration panel', () => {
cy.get('.euiTitle.euiTitle--xxsmall').contains('Data Configurations').should('exist');
cy.get('.euiTitle.euiTitle--xxsmall').contains('Columns').should('exist');
cy.get('.euiButton__text').eq(2).contains('Add').should('not.be.disabled').click();
cy.get('.euiFormLabel.euiFormRow__label').contains('Field');
cy.get('.euiIcon.euiIcon--medium.euiIcon--danger').should('exist');
cy.get('[data-test-subj="comboBoxToggleListButton"]').eq(0).click();
cy.get('.euiFlexItem.euiFilterSelectItem__content').eq(1).click();
cy.get('.euiButton__text').contains('Update Chart').should('not.be.disabled').click();
cy.get('[data-test-subj="docTable"]').should('exist');
});
});
211 changes: 211 additions & 0 deletions .cypress/integration/VisualizationCharts/13_stats_chart.spec.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,211 @@
/*
* Copyright OpenSearch Contributors
* SPDX-License-Identifier: Apache-2.0
*/

/// <reference types="cypress" />
import {
delay,
TEST_QUERIES,
querySearch,
landOnEventVisualizations
} from '../../utils/event_constants';

const numberOfWindow = 4;
const metricsPrecisionUpdated = 2;
const metricUnit = 'cm' ;
const titleSize = '25.5px';
const titleSizeUpdated = '40px';
const valueSize = '60.8px';
const valueSizeUpdated = '73.0px';

const renderStatsChart = () => {
landOnEventVisualizations();
querySearch(TEST_QUERIES[4].query, TEST_QUERIES[4].dateRangeDOM);
cy.get('[data-test-subj="configPane__vizTypeSelector"] [data-test-subj="comboBoxInput"]').type('Stats').type('{enter}');
};

describe('Render stats chart and verify default behaviour ', () => {
beforeEach(() => {
renderStatsChart();
});

it('Render stats chart and verify by default the data gets render', () => {
cy.get('.xy').should('exist');
});

it('Render scatter chart and verify you see data configuration panel and chart panel', () => {
cy.get('.euiPanel.euiPanel--paddingSmall').should('have.length', numberOfWindow);
cy.get('.euiTitle.euiTitle--xxsmall').contains('Data Configurations').should('exist');
cy.get('.euiTitle.euiTitle--xxsmall').contains('Dimensions').should('exist');
cy.get('.euiTitle.euiTitle--xxsmall').contains('Metrics').should('exist');
cy.get('.euiIEFlexWrapFix').contains('Panel options').click();
cy.get('.euiIEFlexWrapFix').contains('Chart styles').click();
cy.get('.euiIEFlexWrapFix').contains('Thresholds').click();
cy.get('[aria-label="Press to toggle this panel"]').eq(1).click();
cy.get('[aria-label="Press to toggle this panel"]').eq(2).click();
});

it('Render stats chart and verify the data configuration panel and chart panel are collapsable', () => {
cy.get('.euiPanel.euiPanel--paddingSmall').should('have.length', numberOfWindow);
cy.get('[aria-label="Press to toggle this panel"]').eq(1).click();
cy.get('[aria-label="Press to toggle this panel"]').eq(2).click();
});
});

describe('Render stats chart for data configuration panel', () => {
beforeEach(() => {
renderStatsChart();
});

it('Render stats chart and verify data config panel', () => {
cy.get('.euiComboBoxPill.euiComboBoxPill--plainText').eq(0).should('contain', 'tags');
cy.get('.euiComboBoxPill.euiComboBoxPill--plainText').eq(1).should('contain', 'count()');
cy.get('.euiComboBoxPill.euiComboBoxPill--plainText').eq(2).should('contain', 'avg(bytes)');
cy.get('.euiComboBoxPill.euiComboBoxPill--plainText').eq(3).should('contain', 'host');
});

it('Render stats chart and verify no result found message if the dimension is removed' , () => {
cy.get('[data-test-subj="comboBoxClearButton"]').eq(0).click();
cy.get('[data-test-subj="visualizeEditorRenderButton"]').click();
cy.get('.euiTextColor.euiTextColor--subdued').contains('No results found').should('exist');
cy.get('[data-test-subj="comboBoxInput"]').eq(1).click();
cy.get('.euiComboBoxOption__content').click();
cy.get('[data-test-subj="visualizeEditorRenderButton"]').click();
cy.get('.main-svg').contains('No results found').should('not.exist');
});

it('Render stats chart and verify data config panel no result found if metric is missing', () => {
cy.get('.euiText.euiText--extraSmall').eq(0).click();
cy.get('.euiText.euiText--extraSmall').eq(1).click();
cy.get('[data-test-subj="comboBoxClearButton"]').eq(1).click();
cy.get('[data-test-subj="comboBoxInput"]').eq(0).click();
cy.get('.euiButton__text').contains('Update chart').click();
cy.get('.euiTextColor.euiTextColor--subdued').contains('No results found').should('exist');
cy.get('[data-test-subj="comboBoxInput"]').eq(3).click();
cy.get('.euiComboBoxOption__content').contains('avg(bytes)').click();
cy.get('.euiButton__text').contains('Update chart').click();
cy.get('.main-svg').contains('No results found').should('not.exist');
});
});

describe('Render stats chart for panel options', () => {
beforeEach(() => {
renderStatsChart();
});

it('Render stats chart and verify the title gets updated according to user input ', () => {
cy.get('input[name="title"]').type("stats chart");
cy.get('textarea[name="description"]').should('exist').click();
cy.get('.gtitle').contains('stats chart').should('exist');
});
});

describe('Render stats chart verfiy functionality for Tooltip mode', () => {
beforeEach(() => {
renderStatsChart();
});

it('Render stats chart and verfiy the Show and Hidden Tooltip modes', () => {
cy.get('.euiButton__text.euiButtonGroupButton__textShift').eq(0).should('have.text', 'Show');
cy.get('.euiButton__text.euiButtonGroupButton__textShift').eq(1).should('have.text', 'Hidden')
.click();
});
});

describe('Render stats chart verfiy functionality for Tooltip text', () => {
beforeEach(() => {
renderStatsChart();
});

it('Render stats chart and verfiy the Tootltip text -> All , Dimension , Metric', () => {
cy.get('.euiButton__text.euiButtonGroupButton__textShift').eq(2).should('have.text', 'All');
cy.get('.euiButton__text.euiButtonGroupButton__textShift').eq(3).should('have.text', 'Dimension')
.click();
cy.get('.euiButton__text.euiButtonGroupButton__textShift').eq(4).should('have.text', 'Series')
.click();
});
});

describe('Render stats chart for Chart Styles ', () => {
beforeEach(() => {
renderStatsChart();
});

it('Render stats chart and verify the various chart type selected', () => {
cy.get('.euiButton__text.euiButtonGroupButton__textShift').eq(5).should('have.text', 'Auto');
cy.get('.euiButton__text.euiButtonGroupButton__textShift').eq(6).should('have.text', 'Horizontal').click();
cy.get('.euiButton__text.euiButtonGroupButton__textShift').eq(7).should('have.text', 'Text mode').click();
});

it('Render stats chart and verify the various chart orientation selected', () => {
cy.get('.euiButton__text.euiButtonGroupButton__textShift').eq(8).should('have.text', 'Auto');
cy.get('.euiButton__text.euiButtonGroupButton__textShift').eq(9).should('have.text', 'Horizontal').click();
cy.get('.euiButton__text.euiButtonGroupButton__textShift').eq(10).should('have.text', 'Vertical').click();
});

it('Render stats chart and verify Metric unit and Metric Precision on chart ', () => {
cy.get('[data-test-subj="valueFieldText"]').click().type(metricUnit);
cy.get('.euiSpacer.euiSpacer--s').eq(12).click();
cy.get('[data-test-subj="valueFieldNumber"]').eq(0).click().type(metricsPrecisionUpdated);
cy.get('.euiSpacer.euiSpacer--s').eq(12).click();
});

it('Render stats chart and verify behaviour for Title size and Value size on chart ', () => {
cy.get('.annotation-text').eq(0).should('have.css', 'font-size', titleSize);
cy.get('.annotation-text').eq(2).should('have.css', 'font-size', titleSize);
cy.get('.annotation-text').eq(4).should('have.css', 'font-size', titleSize);
cy.get('[data-test-subj="valueFieldNumber"]').eq(1).click().type(titleSizeUpdated);
cy.get('.euiSpacer.euiSpacer--s').eq(12).click();
cy.get('.annotation-text').eq(1).should('have.css', 'font-size', valueSize);
cy.get('.annotation-text').eq(3).should('have.css', 'font-size', valueSize);
cy.get('.annotation-text').eq(5).should('have.css', 'font-size', valueSize);
cy.get('[data-test-subj="valueFieldNumber"]').eq(2).click().type(valueSizeUpdated);
cy.get('.euiSpacer.euiSpacer--s').eq(12).click();
});
});

describe('Render stats chart and verify the Text Mode options' , () => {
beforeEach(() => {
renderStatsChart();
});

it('Render stats chart and verify text modes ', () => {
cy.get('[data-text="Names"]').should('have.text', 'Names').click();
cy.get('[data-text="Values"]').should('have.text', 'Values').click();
cy.get('[data-text="Values + Names"]').should('have.text', 'Values + Names').click();
cy.wait(delay);
});
});

describe('Render stats chart and verify the +add threshold button option' , () => {
beforeEach(() => {
renderStatsChart();
});

it('Render stats chart and verify the +Add Threshold button for color picker' , () => {
cy.get('[data-test-subj="euiColorPickerAnchor"]').click();
cy.get('.euiColorPickerSwatch.euiColorPicker__swatchSelect').eq(5).click();
cy.wait(delay);
});
});

describe('Render stats chart and verify the reset button' , () => {
beforeEach(() => {
renderStatsChart();
});

it('Render stats chart and test the Reset button functionality' , () => {
cy.get('[data-test-subj="valueFieldText"]').click().type(metricUnit);
cy.get('.euiSpacer.euiSpacer--s').eq(12).click();
cy.get('[data-test-subj="valueFieldNumber"]').eq(0).click().type(metricsPrecisionUpdated);
cy.get('.euiSpacer.euiSpacer--s').eq(12).click();
cy.get('[data-test-subj="valueFieldNumber"]').eq(1).click().type(titleSizeUpdated);
cy.get('.euiSpacer.euiSpacer--s').eq(12).click();
cy.get('[data-test-subj="valueFieldNumber"]').eq(2).click().type(valueSizeUpdated);
cy.get('.euiSpacer.euiSpacer--s').eq(12).click();
cy.get('[data-test-subj="euiColorPickerAnchor"]').click();
cy.get('.euiColorPickerSwatch.euiColorPicker__swatchSelect').eq(5).click();
cy.get('[data-test-subj="visualizeEditorResetButton"]').click();
});
});
202 changes: 202 additions & 0 deletions .cypress/integration/VisualizationCharts/7_pie_chart.spec.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,202 @@
/*
* Copyright OpenSearch Contributors
* SPDX-License-Identifier: Apache-2.0
*/

/// <reference types="cypress" />
import {
delay,
TEST_QUERIES,
querySearch,
landOnEventVisualizations,
renderDataConfig,
saveVisualizationAndVerify,
deleteVisualization,
} from '../../utils/event_constants';

const renderPieChart = () => {
landOnEventVisualizations();
querySearch(TEST_QUERIES[3].query, TEST_QUERIES[3].dateRangeDOM);
cy.get('[data-test-subj="configPane__vizTypeSelector"] [data-test-subj="comboBoxInput"]').click();
cy.get('[data-test-subj="comboBoxOptionsList "] button span').contains('Pie').click();
};

const aggregationValues = [
'COUNT',
'SUM',
'AVERAGE',
'MAX',
'MIN',
'VAR_SAMP',
'VAR_POP',
'STDDEV_SAMP',
'STDDEV_POP',
];

describe.only('Render Pie chart and verify default behavior', () => {
beforeEach(() => {
renderPieChart();
});

it('Render Pie chart and verify the default data', () => {
cy.get('.plot-container.plotly').should('exist');
});

it('Render Pie chart and verify Data Configuration panel default behavior', () => {
cy.get('.euiTitle.euiTitle--xxsmall').contains('Data Configurations').should('exist');
cy.get('.euiTitle.euiTitle--xxsmall').contains('Dimensions').should('exist');
cy.get('.first-division .euiFormRow__labelWrapper').contains('Aggregation').should('exist');
cy.get('.first-division .euiFormLabel.euiFormRow__label').contains('Field').should('exist');
cy.get('.first-division .euiFormLabel.euiFormRow__label')
.contains('Custom label')
.should('exist');
cy.get('.first-division .euiButton__text').contains('Add').should('exist');
cy.get('.euiTitle.euiTitle--xxsmall').contains('Metrics').should('exist');
cy.get('.euiButton__text').contains('Update chart').should('exist');
});

it('Render Pie chart and verify Style section for Pie chart', () => {
cy.get('#data-panel').contains('Style').should('exist');
cy.get('[aria-controls="configPanel__panelOptions"]').contains('Panel options').should('exist');
cy.get('[aria-controls="configPanel__legend"]').contains('Legend').should('exist');
cy.get('.euiForm.visEditorSidebar__form .euiIEFlexWrapFix')
.contains('Tooltip options')
.should('exist');
cy.get('[aria-controls="configPanel__chartStyles"]').contains('Chart styles').should('exist');
});

it('Options under Legend section', () => {
cy.get('#configPanel__legend').contains('Legend');
cy.get('.euiTitle.euiTitle--xxsmall').eq(3).contains('Show legend');
cy.get('[data-text="Show"]').eq(0).contains('Show');
cy.get('[data-text="Hidden"]').eq(0).contains('Hidden');
cy.get('.euiTitle.euiTitle--xxsmall').contains('Position');
cy.get('[data-text="Right"]').contains('Right');
cy.get('[data-text="Bottom"]').contains('Bottom');
cy.get('.euiTitle.euiTitle--xxsmall').contains('Legend size').should('exist');
});

it('Options under Tooltip options section', () => {
cy.get('.euiIEFlexWrapFix').contains('Tooltip options').should('exist');
cy.get('[data-text="Show"]').eq(1).contains('Show');
cy.get('[data-text="Hidden"]').eq(1).contains('Hidden');
cy.get('.euiTitle.euiTitle--xxsmall').contains('Tooltip text');
cy.get('[data-text="All"]').contains('All');
cy.get('[data-text="Label"]').contains('Label');
cy.get('[data-text="Value"]').contains('Value');
cy.get('[data-text="Percent"]').contains('Percent');
});

it('Options under Chart Styles section', () => {
cy.get('.euiIEFlexWrapFix').contains('Chart styles').should('exist');
cy.get('#configPanel__chartStyles').contains('Mode');
cy.get('.euiTitle.euiTitle--xxsmall').eq(9).contains('Label size');
cy.get('.euiTitle.euiTitle--xxsmall').contains('Color theme');
});

it('Table view should be enabled for Pie chart', () => {
cy.get('.euiSwitch__label').contains('Table view').should('exist');
cy.get('[data-test-subj="workspace__dataTableViewSwitch"][aria-checked="false"]').click();
cy.get('.ag-header.ag-pivot-off').should('exist');
});

it('Render Pie chart and verify legends for Position Right and Bottom', () => {
cy.get('[data-text="Right"]').should('have.text', 'Right');
cy.get('[data-text="Right"] [data-test-subj="v"]').should('have.attr', 'checked');
cy.get('[data-text="Bottom"]').should('have.text', 'Bottom').click();
cy.get('[data-text="Bottom"] [data-test-subj="h"]').should('not.have.attr', 'checked');
cy.get('[data-test-subj="visualizeEditorRenderButton"]').click({ force: true, multiple: true });
});

it('Render Pie chart and verify legends for Show and Hidden', () => {
cy.get('[data-text="Show"]').eq(0).should('have.text', 'Show');
cy.get('[data-text="Show"] [data-test-subj="show"]').should('have.attr', 'checked');
cy.get('[data-text="Hidden"]').eq(0).should('have.text', 'Hidden').click();
cy.get('[data-text="Hidden"] [data-test-subj="hidden"]').should('not.have.attr', 'checked');
cy.get('[data-test-subj="visualizeEditorRenderButton"]').click({ force: true, multiple: true });
});
});

describe('Save and Delete Visualization', () => {
beforeEach(() => {
renderPieChart();
});

it('Render Pie chart, Save and Delete Visualization', () => {
saveVisualizationAndVerify();
deleteVisualization();
});
});

describe('Color Theme section', () => {
beforeEach(() => {
renderPieChart();
});

it('Default option in Color Theme', () => {
cy.get('.euiTitle.euiTitle--xxsmall')
.contains('Color Theme')
.scrollIntoView()
.should('be.visible');
cy.get('.euiSuperSelectControl').contains('Default').should('exist');
});

it('Render pie chart with single color option', () => {
cy.get('.euiTitle.euiTitle--xxsmall')
.contains('Color Theme')
.scrollIntoView()
.should('be.visible');
cy.get('.euiSuperSelectControl').contains('Default').click();
cy.get('.euiColorPalettePicker__item').contains('Single Color').click();
cy.get('[data-test-subj="euiColorPickerAnchor"]').click();
cy.get('.euiColorPickerSwatch.euiColorPicker__swatchSelect').eq(2).click();
cy.get('.pielayer').should('exist');
});
});

describe('Renders Pie chart and Data Configurations section for Pie chart', () => {
beforeEach(() => {
landOnEventVisualizations();
renderPieChart();
});

it('Renders Dimensions and Metrics under Data Configurations for Pie chart', () => {
renderDataConfig();
});

it('Validate "Add" and "X" buttons', () => {
cy.get('.euiResizablePanel.euiResizablePanel--middle').contains('Data Configurations');
cy.get('.euiText.euiText--extraSmall').eq(0).click();
cy.get('.euiButton.euiButton--primary.euiButton--fullWidth').contains('Add').click();
cy.get('[data-test-subj="comboBoxInput"]').eq(2).click();
cy.get('.euiComboBoxOption__content').eq(0).click();
cy.get('.euiIcon.euiIcon--medium.euiIcon--danger').eq(1).click();
cy.get('.first-division .euiFormLabel.euiFormRow__label').eq(4).click();
cy.get('.euiComboBoxOption__content').eq(1).click();
cy.get('.euiFieldText[placeholder="Custom label"]').eq(1).type('Demo field');
cy.get('.euiIcon.euiIcon--medium.euiIcon--danger').eq(1).click();
cy.get('.euiButton.euiButton--primary.euiButton--fullWidth').contains('Add').should('exist');
});

it('Verify drop down values for Aggregation', () => {
cy.get('.euiResizablePanel.euiResizablePanel--middle').contains('Data Configurations');
cy.get('.euiTitle.euiTitle--xxsmall').eq(1).contains('Dimensions').should('exist');
cy.get('.first-division .euiFormLabel.euiFormRow__label').eq(0).contains('Aggregation');
cy.get('.euiText.euiText--extraSmall').eq(0).click();
cy.get('[data-test-subj="comboBoxSearchInput"]').eq(0).click();
aggregationValues.forEach(function (value) {
cy.get('.euiComboBoxOption__content').contains(value);
});
});

it('Collapsible mode for Data Configuration panel', () => {
cy.get('.euiResizablePanel.euiResizablePanel--middle').contains('Data Configurations');
cy.get('.euiResizableButton.euiResizableButton--horizontal').eq(1).click();
cy.get('[data-test-subj="panel-1-toggle"]').click();
cy.get('[class*="euiResizableToggleButton-isCollapsed"]').eq(1).should('exist');
cy.get('.euiResizablePanel.euiResizablePanel--middle')
.contains('Data Configurations')
.should('not.be.focused');
});
});

195 changes: 195 additions & 0 deletions .cypress/integration/VisualizationCharts/9_coordinateMap_chart.spec.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,195 @@
/*
* Copyright OpenSearch Contributors
* SPDX-License-Identifier: Apache-2.0
*/

/// <reference types="cypress" />
import {
TEST_QUERIES,
querySearch,
landOnEventVisualizations
} from '../../utils/event_constants';

const numberOfWindow = 4;
const labelSize = 20;
const latitudeRangeMin = 40;
const latitudeRangeMax = 70;
const longitudeRangeMin = -130;
const longitudeRangeMax = -55;

const renderCoordinateMap = () => {
landOnEventVisualizations();
querySearch(TEST_QUERIES[0].query, TEST_QUERIES[0].dateRangeDOM);
cy.get('[data-test-subj="configPane__vizTypeSelector"] [data-test-subj="comboBoxInput"]').type('Coordinate Map').type('{enter}');
};

const renderDataForCoordinateMap = () => {
cy.get('[data-test-subj="comboBoxInput"]').eq(1).click();
cy.get('.euiComboBoxOption__content').contains('DestLocation').click();
cy.get('[data-test-subj="comboBoxInput"]').eq(3).click();
cy.get('.euiComboBoxOption__content').contains('AvgTicketPrice').click();
cy.get('[data-test-subj="comboBoxInput"]').eq(4).click();
cy.get('.euiComboBoxOption__content').contains('Dest').click();
cy.get('.euiButton__text').contains('Update chart').click();
cy.get('.layer.land').should('exist');
cy.get('stop[stop-color="rgb(5, 10, 172)"]').should('exist');
}

describe('Render coordinate map and verify default behaviour ', () => {
beforeEach(() => {
renderCoordinateMap();
});

it('Render coordinate map and verify by default the data dont gets render', () => {
cy.get('.layer.land').should('not.exist');
cy.get('.euiTextColor.euiTextColor--subdued').contains('No results found').should('exist');
});

it('Render coordinate map and verify you see data configuration panel and chart panel', () => {
cy.get('.euiPanel.euiPanel--paddingSmall').should('have.length', numberOfWindow);
cy.get('.euiTitle.euiTitle--xxsmall').contains('Data Configurations').should('exist');
cy.get('.euiTitle.euiTitle--xxsmall').contains('Dimensions').should('exist');
cy.get('.euiTitle.euiTitle--xxsmall').contains('Metrics').should('exist');
cy.get('.euiIEFlexWrapFix').contains('Panel options').click();
cy.get('.euiIEFlexWrapFix').contains('Text').click();
cy.get('.euiIEFlexWrapFix').contains('Chart styles').click();
cy.get('[aria-label="Press to toggle this panel"]').eq(1).click();
cy.get('[aria-label="Press to toggle this panel"]').eq(2).click();
});

it('Render coordinate map and verify the data configuration panel and chart panel are collapsable', () => {
cy.get('.euiPanel.euiPanel--paddingSmall').should('have.length', numberOfWindow);
cy.get('[aria-label="Press to toggle this panel"]').eq(1).click();
cy.get('[aria-label="Press to toggle this panel"]').eq(2).click();
});
});

describe('Render coordinate map for data configuration panel', () => {
beforeEach(() => {
renderCoordinateMap();
});

it('Render coordinate map and verify data config panel', () => {
cy.get('[data-test-subj="comboBoxInput"]').eq(1).contains('Select a field').should('exist');
cy.get('[data-test-subj="comboBoxInput"]').eq(3).contains('Select a field').should('exist');
cy.get('[data-test-subj="comboBoxInput"]').eq(4).contains('Select a field').should('exist');
});

it('Render coordinate map and verify data gets render only after selecting the field value in data configuration panel', () => {
renderDataForCoordinateMap();
});

it('Render coordinate map and verify data config dimensions panel "Field" contains only location', () => {
cy.get('[data-test-subj="comboBoxInput"]').eq(1).click();
cy.get('.euiComboBoxOption__content').contains('DestLocation').should('exist');
cy.get('.euiComboBoxOption__content').contains('OriginLocation').should('exist');
});

it('Render coordinate map and verify data config metrics panel "Field" contains only value which return either integer or float value', () => {
cy.get('[data-test-subj="comboBoxInput"]').eq(3).click();
cy.get('.euiComboBoxOption__content').contains('AvgTicketPrice').should('exist');
cy.get('.euiComboBoxOption__content').contains('DistanceMiles').should('exist');
cy.get('.euiComboBoxOption__content').should('not.contain', 'DestLocation');
cy.get('.euiComboBoxOption__content').should('have.length', 6);
});

it('Render coordinate map and verify data config metric panel "Plot Label" contains a combination of string value and integer value', () => {
cy.get('[data-test-subj="comboBoxInput"]').eq(4).click();
cy.get('.euiComboBoxOption__content').contains('AvgTicketPrice').should('exist');
cy.get('.euiComboBoxOption__content').contains('Dest').should('exist');
cy.get('.euiComboBoxOption__content').contains('DestLocation').should('exist');
});
});

describe('Render coordinate map for panel options', () => {
beforeEach(() => {
renderCoordinateMap();
renderDataForCoordinateMap();
});

it('Render coordinate map and verify the title gets updated according to user input ', () => {
cy.get('input[name="title"]').type("coordinate map");
cy.get('textarea[name="description"]').should('exist').click();
cy.get('.gtitle').contains('coordinate map').should('exist');
});
});

describe('Render coordinate map for text', () => {
beforeEach(() => {
renderCoordinateMap();
renderDataForCoordinateMap();
});

it('Render coordinate map and verify by default the "Show" is enabled for "Show Text"', () => {
cy.get('[data-text="Show"]').should('have.text', 'Show');
cy.get('[data-text="Show"] [data-test-subj="show"]').should('have.attr', 'checked');
cy.get('[data-unformatted="Duluth International Airport"]').should('exist');
});

it('Render coordinate map and change "Show Text" to "Hidden"', () => {
cy.get('[data-text="Hidden"]').should('have.text', 'Hidden').click();
cy.get('[data-text="Hidden"] [data-test-subj="hidden"]').should('not.have.attr', 'checked');
cy.get('[data-unformatted="Duluth International Airport"]').should('not.exist');
});

it('Render coordinate map and verify by default the "Top" is enabled for "Position"', () => {
cy.get('[data-text="Top"]').should('have.text', 'Top');
cy.get('[data-text="Top"] [data-test-subj="top center"]').should('have.attr', 'checked');
});

it('Render coordinate map and change "Position" to "Right", "Bottom" and "Left"', () => {
cy.get('[data-text="Right"]').should('have.text', 'Right').click();
cy.get('[data-text="Right"] [data-test-subj="middle right"]').should('not.have.attr', 'checked');
cy.get('[data-text="Bottom"]').should('have.text', 'Bottom').click();
cy.get('[data-text="Bottom"] [data-test-subj="bottom center"]').should('not.have.attr', 'checked');
cy.get('[data-text="Left"]').should('have.text', 'Left').click();
cy.get('[data-text="Left"] [data-test-subj="middle left"]').should('not.have.attr', 'checked');
});
});

describe('Render coordinate map for chart style options', () => {
beforeEach(() => {
renderCoordinateMap();
renderDataForCoordinateMap();
});

it('Render coordinate map and change Label Size ', () => {
cy.get('[data-test-subj="valueFieldNumber"]').click().type(labelSize);
cy.get('textarea[name="description"]').should('exist').click();
cy.get('[data-unformatted="Duluth International Airport"]').should('have.css', 'font-size', '20px');
cy.get('[data-test-subj="valueFieldNumber"]').should('have.value', labelSize)
});

it('Render coordinate map and change "Latitude Range"', () => {
cy.get('input[type="number"]').eq(1).should('have.value', latitudeRangeMin);
cy.get('input[type="number"]').eq(2).should('have.value', latitudeRangeMax);
cy.get('input[type="number"]').eq(1).click().clear().type(30);
});

it('Render coordinate map and change "Longitude Range"', () => {
cy.get('input[type="number"]').eq(3).should('have.value', longitudeRangeMin);
cy.get('input[type="number"]').eq(4).should('have.value', longitudeRangeMax);
cy.get('input[type="number"]').eq(4).click().clear().type(40);
});
});

describe('Render coordinate map and verify if reset works properly', () => {
beforeEach(() => {
renderCoordinateMap();
renderDataForCoordinateMap();
});

it('Render coordinate map with all feild data then click on reset and verify reset works properly', () => {
cy.get('input[placeholder="Title"]').type('coordinate map');
cy.get('textarea[placeholder="Description"]').type('Description For coordinate map');
cy.get('.euiButton__text').contains('Hidden').click();
cy.get('.euiButton__text').contains('Right').click();
cy.get('[data-test-subj="valueFieldNumber"]').click().type(labelSize);
cy.get('.euiButtonEmpty__text').contains('Reset').click();
cy.get('input[placeholder="Title"]').should('not.have.value', 'coordinate map');
cy.get('textarea[placeholder="Description"]').should('not.have.value', 'Description For coordinate map');
cy.get('[data-text="Show"] [data-test-subj="show"]').should('have.attr', 'checked');
cy.get('[data-text="Top"] [data-test-subj="top center"]').should('have.attr', 'checked');
cy.get('[data-test-subj="valueFieldNumber"]').should('have.value', '');
});
});
21 changes: 21 additions & 0 deletions .cypress/utils/constants.js
Original file line number Diff line number Diff line change
@@ -60,6 +60,8 @@ export const setTimeFilter = (setEndTime = false, refresh = true) => {
// notebooks
export const TEST_NOTEBOOK = 'Test Notebook';
export const SAMPLE_URL = 'https://github.com/opensearch-project/sql/tree/main/sql-jdbc';
export const NOTEBOOK_TEXT = 'Use Notebooks to interactively and collaboratively develop rich reports backed by live data. Common use cases for notebooks includes creating postmortem reports, designing run books, building live infrastructure reports, or even documentation.';
export const OPENSEARCH_URL = 'https://opensearch.org/docs/latest/observability-plugin/notebooks/';
export const MARKDOWN_TEXT = `%md
# Heading 1
@@ -100,3 +102,22 @@ export const supressResizeObserverIssue = () => {
if (err.message.includes('ResizeObserver loop')) return false;
});
};

export const verify_traces_spans_data_grid_cols_exists = () => {
cy.get('.euiDataGridHeaderCell__content').contains('Span ID').should('exist');
cy.get('.euiDataGridHeaderCell__content').contains('Trace ID').should('exist');
cy.get('.euiDataGridHeaderCell__content').contains('Operation').should('exist');
cy.get('.euiDataGridHeaderCell__content').contains('Duration').should('exist');
cy.get('.euiDataGridHeaderCell__content').contains('Start time').should('exist');
cy.get('.euiDataGridHeaderCell__content').contains('End time').should('exist');
cy.get('.euiDataGridHeaderCell__content').contains('Errors').should('exist');
}

export const count_table_row = (expected_row_count) => {
cy.get('.euiDataGridHeader [role="columnheader"]').then($el => {
let colmun_header_count = Cypress.$($el).length;
let table_grid_cell_count = Cypress.$('[data-test-subj="dataGridRowCell"]').length;
const total_row_count = table_grid_cell_count / colmun_header_count;
expect(total_row_count).to.equal(expected_row_count)
});
}
199 changes: 188 additions & 11 deletions .cypress/utils/event_constants.js
Original file line number Diff line number Diff line change
@@ -3,30 +3,53 @@
* SPDX-License-Identifier: Apache-2.0
*/

import { supressResizeObserverIssue } from './constants'
import { supressResizeObserverIssue } from './constants';

export const delay = 1000;
export const YEAR_TO_DATE_DOM_ID = '[data-test-subj="superDatePickerCommonlyUsed_Year_to date"]'
export const YEAR_TO_DATE_DOM_ID = '[data-test-subj="superDatePickerCommonlyUsed_Year_to date"]';

export const TEST_QUERIES = [
{
query: 'source = opensearch_dashboards_sample_data_flights',
dateRangeDOM: YEAR_TO_DATE_DOM_ID
dateRangeDOM: YEAR_TO_DATE_DOM_ID,
},
{
query: 'source = opensearch_dashboards_sample_data_flights | stats avg(FlightDelayMin) by Carrier',
dateRangeDOM: YEAR_TO_DATE_DOM_ID
query:
'source = opensearch_dashboards_sample_data_flights | stats avg(FlightDelayMin) by Carrier',
dateRangeDOM: YEAR_TO_DATE_DOM_ID,
},
{
query: 'source = opensearch_dashboards_sample_data_logs'
query: 'source = opensearch_dashboards_sample_data_logs',
},
{
query: 'source = opensearch_dashboards_sample_data_logs | stats count() by host',
dateRangeDOM: YEAR_TO_DATE_DOM_ID
query:
'source=opensearch_dashboards_sample_data_flights | stats max(AvgTicketPrice) by DestCountry, DestCityName, Carrier',
dateRangeDOM: YEAR_TO_DATE_DOM_ID,
},
{
query: 'source = opensearch_dashboards_sample_data_logs | stats count(), avg(bytes) by host, tags',
dateRangeDOM: YEAR_TO_DATE_DOM_ID
query:
'source = opensearch_dashboards_sample_data_logs | stats count(), avg(bytes) by host, tags',
dateRangeDOM: YEAR_TO_DATE_DOM_ID,
},
{
query:
'source=opensearch_dashboards_sample_data_flights | stats avg(FlightDelayMin) by DestCountry, DestCityName',
dateRangeDOM: YEAR_TO_DATE_DOM_ID,
},
{
query:
"source = opensearch_dashboards_sample_data_logs | where response='503' or response='404' | stats count() by span(timestamp,1d)",
dateRangeDOM: YEAR_TO_DATE_DOM_ID,
},
{
query:
'source=opensearch_dashboards_sample_data_flights |where FlightDelayMin > 0 | stats sum(FlightDelayMin) as total_delay_min, count() as total_delayed by Carrier |eval avg_delay=total_delay_min / total_delayed | sort - avg_delay',
dateRangeDOM: YEAR_TO_DATE_DOM_ID,
},
{
query:
'source = opensearch_dashboards_sample_data_logs | stats count(), max(bytes) by span(timestamp,1d), clientip, host',
dateRangeDOM: YEAR_TO_DATE_DOM_ID,
},
];

@@ -36,6 +59,18 @@ export const SAVE_QUERY2 = 'Mock Flight count by destination';
export const SAVE_QUERY3 = 'Mock Flight count by destination save to panel';
export const SAVE_QUERY4 = 'Mock Flight peek';

export const aggregationValues = [
'COUNT',
'SUM',
'AVERAGE',
'MAX',
'MIN',
'VAR_SAMP',
'VAR_POP',
'STDDEV_SAMP',
'STDDEV_POP',
];

export const querySearch = (query, rangeSelected) => {
cy.get('[data-test-subj="searchAutocompleteTextArea"]').type(query);
cy.get('[data-test-subj="superDatePickerToggleQuickMenuButton"]').click();
@@ -70,4 +105,146 @@ export const landOnPanels = () => {
`${Cypress.env('opensearchDashboards')}/app/observability-dashboards#/operational_panels`
);
cy.wait(delay);
};
};

const vis_name_sub_string = Math.floor(Math.random() * 100);
export const saveVisualizationAndVerify = () => {
cy.get('[data-test-subj="eventExplorer__saveManagementPopover"]').click();
cy.get('[data-test-subj="eventExplorer__querySaveComboBox"]').click();
cy.get('.euiComboBoxOptionsList__rowWrap .euiFilterSelectItem').eq(0).click();
cy.get(
'.euiPopover__panel .euiFormControlLayoutIcons [data-test-subj="comboBoxToggleListButton"]'
)
.eq(0)
.click();
cy.get('.euiPopover__panel input')
.eq(1)
.type(`Test visualization` + vis_name_sub_string);
cy.get('[data-test-subj="eventExplorer__querySaveConfirm"]').click();
cy.wait(delay);
cy.get('.euiHeaderBreadcrumbs a').eq(1).click();
cy.get('.euiFlexGroup .euiFormControlLayout__childrenWrapper input')
.eq(0)
.type(`Test visualization` + vis_name_sub_string)
.type('{enter}');
cy.get('.euiBasicTable .euiTableCellContent button').eq(0).click();
};

export const deleteVisualization = () => {
cy.get('a[href = "#/event_analytics"]').click();
cy.get('.euiFlexGroup .euiFormControlLayout__childrenWrapper input')
.eq(0)
.type(`Test visualization` + vis_name_sub_string)
.type('{enter}');
cy.get('input[data-test-subj = "checkboxSelectAll"]').click();
cy.get('.euiButtonContent.euiButtonContent--iconRight.euiButton__content').click();
cy.get('.euiContextMenuItem .euiContextMenuItem__text').eq(0).click();
cy.get('input[placeholder = "delete"]').clear().type('delete');
cy.get('button[data-test-subj = "popoverModal__deleteButton"]').click();
cy.get('.euiToastHeader').should('exist');
};

export const renderTreeMapchart = () => {
querySearch(TEST_QUERIES[7].query, TEST_QUERIES[7].dateRangeDOM);
cy.get('[data-test-subj="configPane__vizTypeSelector"] [data-test-subj="comboBoxInput"]')
.type('Tree Map')
.type('{enter}');
cy.get('#configPanel__panelOptions .euiFieldText').click().type('Tree Map');
cy.get('.euiFlexItem .euiFormRow [placeholder="Description"]')
.click()
.type('This is the description for Tree Map');
cy.get('.euiIEFlexWrapFix').eq(1).contains('Treemap').should('exist');
cy.get('#configPanel__treemap_options').contains('Tiling Algorithm').should('exist');
cy.get('[data-test-subj = "comboBoxInput"]').eq(3).click();
cy.get('button[name="Slice Dice"]').click();
};

export const renderPieChart = () => {
querySearch(TEST_QUERIES[5].query, TEST_QUERIES[5].dateRangeDOM);
cy.get('[data-test-subj="configPane__vizTypeSelector"] [data-test-subj="comboBoxInput"]').click();
cy.get('[data-test-subj="comboBoxOptionsList "] button span').contains('Pie').click();
cy.wait(delay);
cy.get('#configPanel__panelOptions .euiFieldText').click().type('Pie chart');
cy.get('.euiFlexItem .euiFormRow [placeholder="Description"]')
.click()
.type('This is the description for Pie chart');
cy.get('[aria-controls="configPanel__legend"]').contains('Legend').should('exist');
cy.get('#configPanel__legend .euiTitle.euiTitle--xxsmall').eq(0).contains('Show Legend');
cy.get('span[data-text="Show"]').contains('Show').should('exist');
cy.get('#configPanel__legend .euiTitle.euiTitle--xxsmall').eq(1).contains('Position');
cy.get('span[data-text="Right"]').contains('Right').should('exist');
cy.get('#configPanel__legend .euiTitle.euiTitle--xxsmall').eq(2).contains('Legend Size');
cy.get('[aria-controls="configPanel__chartStyles"]').contains('Chart Styles').should('exist');
cy.get('#configPanel__chartStyles .euiTitle.euiTitle--xxsmall').eq(0).contains('Mode').click();
cy.get(
'#configPanel__chartStyles .euiComboBox__inputWrap.euiComboBox__inputWrap--noWrap.euiComboBox__inputWrap-isClearable'
).click();
cy.get('.euiComboBoxOption__content').contains('Donut').click();
cy.get('#configPanel__chartStyles .euiTitle.euiTitle--xxsmall').eq(1).contains('Label Size');
cy.get('#configPanel__chartStyles input[type="number"]').click().type('10');
cy.get('#configPanel__chartStyles .euiTitle.euiTitle--xxsmall').eq(2).contains('Color Theme');
cy.get('.euiSuperSelectControl').click();
cy.get('.euiColorPalettePicker__item').eq(1).contains('Single Color').click();
cy.get('.euiFieldText.euiColorPicker__input.euiFieldText--withIcon').click();
cy.get('[aria-label="Select #D36086 as the color"]').click();
cy.get('.visEditorSidebar__controls [data-test-subj="visualizeEditorRenderButton"]')
.contains('Preview')
.click();
cy.get('.plot-container.plotly').should('exist');
};

export const renderDataConfig = () => {
cy.get('.euiResizablePanel.euiResizablePanel--middle').contains('Data Cofigurations');
cy.get('.euiTitle.euiTitle--xxsmall').eq(1).contains('Dimensions').should('exist');
cy.get('.first-division .euiFormLabel.euiFormRow__label').eq(0).contains('Aggregation');
cy.get('[data-test-subj="comboBoxSearchInput"]').eq(0).click();
cy.get('.euiComboBoxOption__content').eq(2).click();
cy.get('.first-division .euiFormLabel.euiFormRow__label').eq(1).contains('Field');
cy.get('[data-test-subj="comboBoxSearchInput"]').eq(1).click();
cy.get('.euiComboBoxOption__content').eq(1).click();
cy.get('.euiFieldText[placeholder="Custom label"]').eq(0).type('Average field');
cy.get('.euiTitle.euiTitle--xxsmall').eq(2).contains('Metrics').should('exist');
cy.get('.first-division .euiFormLabel.euiFormRow__label').eq(0).contains('Aggregation');
cy.get('.euiFormRow__fieldWrapper .euiComboBox').eq(2).click();
cy.get('.euiComboBoxOption__content').eq(4).click();
cy.get('.first-division .euiFormLabel.euiFormRow__label').eq(4).click();
cy.get('.euiComboBoxOption__content').eq(0).click();
cy.get('.euiFieldText[placeholder="Custom label"]').eq(1).type('Min field');
cy.get('.euiButton__text').contains('Right').click();
cy.get('[data-test-subj="visualizeEditorRenderButton"]').contains('Update chart').click();
cy.get('.js-plotly-plot').should('exist');
};

export const renderLineChart = () => {
landOnEventVisualizations();
querySearch(TEST_QUERIES[5].query, TEST_QUERIES[5].dateRangeDOM);
cy.get('[data-test-subj="configPane__vizTypeSelector"] [data-test-subj="comboBoxInput"]')
.type('Line')
.type('{enter}');
};

export const renderAddParent = () => {
cy.get(' [data-test-subj="addParentButton"] .euiButton__text').contains('+ Add Parent').click();
cy.get('.first-division .euiFormLabel.euiFormRow__label').contains('Parent 1').should('exist');
cy.get('p.euiComboBoxPlaceholder').eq(0).click({ force: true });
cy.get('.euiComboBoxOption__content').eq(0).click();
cy.get(' [data-test-subj="addParentButton"] .euiButton__text').contains('+ Add Parent').click();
cy.get('.first-division .euiFormLabel.euiFormRow__label').contains('Parent 2').should('exist');
cy.get('p.euiComboBoxPlaceholder').click({ force: true });
cy.get('.euiComboBoxOption__content').eq(1).click();
cy.get(' [data-test-subj="addParentButton"] .euiButton__text').contains('+ Add Parent').click();
cy.get('.first-division .euiFormLabel.euiFormRow__label').contains('Parent 3').should('exist');
cy.get('p.euiComboBoxPlaceholder').click({ force: true });
cy.get('.euiComboBoxOption__content').eq(2).click();
cy.get('[data-test-subj="configPane__vizTypeSelector"] [data-test-subj="comboBoxInput"]')
.type('Line')
.type('{enter}');
};

export const renderGaugeChart = () => {
landOnEventVisualizations();
querySearch(TEST_QUERIES[1].query, TEST_QUERIES[1].dateRangeDOM);
cy.get('[data-test-subj="configPane__vizTypeSelector"] [data-test-subj="comboBoxInput"]')
.type('Gauge')
.type('{enter}');
};
Original file line number Diff line number Diff line change
@@ -11,8 +11,10 @@ env:
jobs:

build:

runs-on: ubuntu-latest
strategy:
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
runs-on: ${{ matrix.os }}

steps:
- name: Checkout Plugin
@@ -57,13 +59,13 @@ jobs:
yarn test --coverage
- name: Upload coverage
if: ${{ matrix.os == 'ubuntu-latest' }}
uses: codecov/codecov-action@v1
with:
flags: dashboards-observability
directory: ./OpenSearch-Dashboards/plugins/dashboards-observability
token: ${{ secrets.CODECOV_TOKEN }}

# TODO remove hard coded version when observability is ready
- name: Build Artifact
run: |
cd OpenSearch-Dashboards/plugins/dashboards-observability
@@ -73,6 +75,5 @@ jobs:
- name: Upload Artifact
uses: actions/upload-artifact@v1
with:
name: dashboards-observability
path: ./OpenSearch-Dashboards/plugins/dashboards-observability/build

name: dashboards-observability-${{ matrix.os }}
path: ./OpenSearch-Dashboards/plugins/dashboards-observability/build
Original file line number Diff line number Diff line change
@@ -4,13 +4,18 @@ on: [pull_request, push]

jobs:
build:
env:
BUILD_ARGS: ${{ matrix.os_build_args }}
strategy:
matrix:
java:
- 11
- 17

runs-on: ubuntu-latest
java: [11, 17]
os: [ubuntu-latest, windows-latest, macos-latest]
include:
- os: windows-latest
os_build_args: -x integTest -x jacocoTestReport
- os: macos-latest
os_build_args: -x integTest -x jacocoTestReport
runs-on: ${{ matrix.os }}

steps:
- uses: actions/checkout@v1
@@ -21,6 +26,8 @@ jobs:
java-version: ${{ matrix.java }}

- name: Run Backwards Compatibility Tests
# Temporarily only do this for linux
if: ${{ matrix.os == 'ubuntu-latest' }}
run: |
cd opensearch-observability
echo "Running backwards compatibility tests ..."
@@ -29,9 +36,10 @@ jobs:
- name: Build with Gradle
run: |
cd opensearch-observability
./gradlew build
./gradlew build ${{ env.BUILD_ARGS }}
- name: Upload coverage
if: ${{ matrix.os == 'ubuntu-latest' }}
uses: codecov/codecov-action@v1
with:
flags: opensearch-observability
@@ -46,5 +54,5 @@ jobs:
- name: Upload Artifacts
uses: actions/upload-artifact@v1
with:
name: opensearch-observability
path: opensearch-observability-builds
name: opensearch-observability-${{ matrix.os }}
path: opensearch-observability-builds
Loading

0 comments on commit fd08c52

Please sign in to comment.