1
- # Running AD integ tests stored in https://github.com/opensearch-project/opensearch-dashboards-functional-test
2
- # In the future we should pull dependencies from bundled build snapshots. Because that is not available
3
- # yet we build the cluster from source (besides core Opensearch, which is a pulled min artifact).
4
- name : Remote integ tests workflow
5
- on :
6
- push :
7
- branches :
8
- - " *"
9
- pull_request :
10
- branches :
11
- - " *"
1
+ name : FTR E2E AD Workbench Test
2
+
3
+ on : [pull_request, push]
4
+
5
+ env :
6
+ CI : 1
7
+ # avoid warnings like "tput: No value for $TERM and no -T specified"
8
+ TERM : xterm
9
+ OPENSEARCH_DASHBOARDS_VERSION : ' main'
10
+ OPENSEARCH_VERSION : ' 3.0.0'
11
+ OPENSEARCH_PLUGIN_VERSION : ' 3.0.0.0'
12
+
12
13
jobs :
13
- test-without-security :
14
- name : Run integ tests without security
14
+ tests :
15
+ name : Run FTR E2E AD Workbench Tests
15
16
strategy :
17
+ fail-fast : false
16
18
matrix :
17
- os : [ubuntu-latest, windows-latest]
18
- java : [11]
19
- include :
20
- - os : windows-latest
21
- cypress_cache_folder : ~/AppData/Local/Cypress/Cache
22
- - os : ubuntu-latest
23
- cypress_cache_folder : ~/.cache/Cypress
19
+ os : [ ubuntu-latest ]
20
+ jdk : [ 11 ]
24
21
runs-on : ${{ matrix.os }}
25
- steps :
26
- - name : Set up Java 11
27
- uses : actions/setup-java@v3
28
- with :
29
- distribution : ' corretto'
30
- java-version : ' 11'
31
-
32
- - name : Enable longer filenames
33
- if : ${{ matrix.os == 'windows-latest' }}
34
- run : git config --system core.longpaths true
35
-
36
- - name : Checkout OpenSearch Dashboards
37
- uses : actions/checkout@v2
38
- with :
39
- repository : opensearch-project/OpenSearch-Dashboards
40
- ref : ' ${{ github.base_ref }}'
41
- path : OpenSearch-Dashboards
42
-
43
- - name : Checkout Anomaly Detection OpenSearch Dashboards plugin
44
- uses : actions/checkout@v2
45
- with :
46
- path : OpenSearch-Dashboards/plugins/anomaly-detection-dashboards-plugin
47
22
48
- - name : Setup Node
49
- uses : actions/setup-node@v3
23
+ steps :
24
+ - name : Set up JDK
25
+ uses : actions/setup-java@v1
50
26
with :
51
- node-version-file : ' ./OpenSearch-Dashboards/.nvmrc'
52
- registry-url : ' https://registry.npmjs.org'
53
-
54
- - name : Install Yarn
55
- # Need to use bash to avoid having a windows/linux specific step
56
- shell : bash
57
- run : |
58
- YARN_VERSION=$(node -p "require('./OpenSearch-Dashboards/package.json').engines.yarn")
59
- echo "Installing yarn@$YARN_VERSION"
60
- npm i -g yarn@$YARN_VERSION
61
-
62
- - run : node -v
63
- - run : yarn -v
27
+ java-version : ${{ matrix.jdk }}
64
28
65
29
- name : Checkout Anomaly-Detection
66
30
uses : actions/checkout@v2
@@ -78,56 +42,111 @@ jobs:
78
42
./gradlew run -Dopensearch.version=$OPENSEARCH_VERSION &
79
43
timeout 300 bash -c 'while [[ "$(curl -s -o /dev/null -w ''%{http_code}'' localhost:9200)" != "200" ]]; do sleep 5; done'
80
44
shell : bash
45
+
46
+ - name : Check OpenSearch Running on Linux
47
+ if : ${{ runner.os != 'Windows'}}
48
+ run : curl http://localhost:9200/
49
+ shell : bash
50
+
51
+ - name : Show OpenSearch Logs
52
+ if : always()
53
+ run : cat ./opensearch-${{ env.OPENSEARCH_VERSION }}-SNAPSHOT/logs/opensearch.log
54
+ shell : bash
55
+
56
+ - name : Checkout OpenSearch Dashboards
57
+ uses : actions/checkout@v2
58
+ with :
59
+ path : OpenSearch-Dashboards
60
+ repository : opensearch-project/OpenSearch-Dashboards
61
+ ref : ${{ env.OPENSEARCH_DASHBOARDS_VERSION }}
62
+ fetch-depth : 0
63
+ filter : |
64
+ cypress
65
+ test
81
66
82
- - name : Bootstrap the plugin
83
- run : |
84
- cd OpenSearch-Dashboards/plugins/anomaly-detection-dashboards-plugin
85
- yarn osd bootstrap --single-version=loose
67
+ - name : Checkout AD in OpenSearch Dashboards Plugins Dir
68
+ uses : actions/checkout@v2
69
+ with :
70
+ path : OpenSearch-Dashboards/plugins/anomaly-detection-dashboards-plugin
86
71
87
- - name : Run OpenSearch Dashboards server
72
+ - id : tool-versions
88
73
run : |
89
- cd OpenSearch-Dashboards
90
- yarn start --no-base-path --no-watch &
74
+ echo "node_version=$(cat .node-version)" >> $GITHUB_OUTPUT
75
+ echo "yarn_version=$(jq -r '.engines.yarn' package.json)" >> $GITHUB_OUTPUT
76
+ working-directory : OpenSearch-Dashboards
91
77
shell : bash
92
78
93
- # Window is slow so wait longer
94
- - name : Sleep until OSD server starts - windows
95
- if : ${{ matrix.os == 'windows-latest' }}
96
- run : Start-Sleep -s 400
97
- shell : powershell
79
+ - uses : actions/setup-node@v1
80
+ with :
81
+ node-version : ${{ steps.tool-versions.outputs.node_version }}
82
+ registry-url : ' https://registry.npmjs.org'
98
83
99
- - name : Sleep until OSD server starts - non-windows
100
- if : ${{ matrix.os != 'windows-latest' }}
101
- run : sleep 300
84
+ - name : Setup Opensearch Dashboards
85
+ run : |
86
+ npm uninstall -g yarn
87
+ echo "Installing yarn ${{ steps.tool-versions.outputs.yarn_version }}"
88
+ npm i -g yarn@${{ steps.tool-versions.outputs.yarn_version }}
89
+ yarn cache clean
90
+ yarn add sha.js
91
+ working-directory : OpenSearch-Dashboards
102
92
shell : bash
103
93
104
- - name : Checkout opensearch-dashboards-functional-test
94
+ - name : Boodstrap Opensearch Dashboards
95
+ run : |
96
+ yarn osd bootstrap --single-version=loose
97
+ working-directory : OpenSearch-Dashboards
98
+
99
+ - name : Run Opensearch Dashboards with Query Workbench Installed
100
+ run : |
101
+ nohup yarn start --no-base-path --no-watch | tee dashboard.log &
102
+ working-directory : OpenSearch-Dashboards
103
+
104
+ - name : Check If OpenSearch Dashboards Is Ready
105
+ if : ${{ runner.os == 'Linux' }}
106
+ run : |
107
+ if timeout 600 grep -q "bundles compiled successfully after" <(tail -n0 -f dashboard.log); then
108
+ echo "OpenSearch Dashboards compiled successfully."
109
+ else
110
+ echo "Timeout for 600 seconds reached. OpenSearch Dashboards did not finish compiling."
111
+ exit 1
112
+ fi
113
+ working-directory : OpenSearch-Dashboards
114
+
115
+ - name : Checkout Dashboards Functioanl Test Repo
105
116
uses : actions/checkout@v2
106
117
with :
107
118
path : opensearch-dashboards-functional-test
108
119
repository : opensearch-project/opensearch-dashboards-functional-test
109
- ref : ' ${{ github.base_ref }}'
120
+ ref : ${{ env.OPENSEARCH_DASHBOARDS_VERSION }}
121
+ fetch-depth : 0
122
+
123
+ - name : Install Cypress
124
+ run : |
125
+ npm install cypress --save-dev
126
+ shell : bash
127
+ working-directory : opensearch-dashboards-functional-test
110
128
111
129
- name : Get Cypress version
112
130
id : cypress_version
113
131
run : |
114
- echo "::set-output name=cypress_version::$(cat ./opensearch-dashboards-functional-test/package.json | jq '.devDependencies.cypress' | tr -d '"')"
132
+ echo "::set-output name=cypress_version::$(cat ./package.json | jq '.dependencies.cypress' | tr -d '"')"
133
+ working-directory : opensearch-dashboards-functional-test
115
134
116
- - name : Cache Cypress
117
- id : cache-cypress
118
- uses : actions/cache@v1
135
+ - name : Run Cypress tests
136
+ run : |
137
+ yarn cypress:run-without-security --browser chromium --spec 'cypress/integration/plugins/anomaly-detection-dashboards-plugin/*.js'
138
+ working-directory : opensearch-dashboards-functional-test
139
+
140
+ - name : Capture failure screenshots
141
+ uses : actions/upload-artifact@v1
142
+ if : failure()
119
143
with :
120
- path : ${{ matrix.cypress_cache_folder }}
121
- key : cypress-cache-v2-${{ runner.os }}-${{ hashFiles('**/package.json') }}
122
- env :
123
- CYPRESS_INSTALL_BINARY : ${{ steps.cypress_version.outputs.cypress_version }}
124
- - run : npx cypress cache list
125
- - run : npx cypress cache path
126
-
127
- - name : Run AD cypress tests
128
- uses : cypress-io/github-action@v2
144
+ name : cypress-screenshots-${{ matrix.os }}
145
+ path : opensearch-dashboards-functional-test/cypress/screenshots
146
+
147
+ - name : Capture failure test video
148
+ uses : actions/upload-artifact@v1
149
+ if : failure()
129
150
with :
130
- working-directory : opensearch-dashboards-functional-test
131
- command : yarn run cypress run --env SECURITY_ENABLED=false --spec cypress/integration/plugins/anomaly-detection-dashboards-plugin/**/*.js
132
- env :
133
- CYPRESS_CACHE_FOLDER : ${{ matrix.cypress_cache_folder }}
151
+ name : cypress-videos-${{ matrix.os }}
152
+ path : opensearch-dashboards-functional-test/cypress/videos
0 commit comments