-
Notifications
You must be signed in to change notification settings - Fork 966
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[Discover] Adding Cypress Tests for S3 Datasets (#9113)
- Loading branch information
Showing
5 changed files
with
311 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,148 @@ | ||
name: Run cypress tests with S3 | ||
|
||
# trigger once PR has been merged | ||
on: | ||
push: | ||
branches: ['main', '[0-9]+\.x', '[0-9]+\.[0-9]+'] | ||
paths-ignore: | ||
- '**/*.md' | ||
- '.lycheeignore' | ||
- 'changelogs/fragments/**' | ||
workflow_dispatch: | ||
inputs: | ||
test_repo: | ||
description: 'Cypress test repo' | ||
default: 'opensearch-project/opensearch-dashboards-functional-test' | ||
required: true | ||
type: string | ||
test_branch: | ||
description: 'Cypress test branch (default: source branch)' | ||
required: false | ||
type: string | ||
specs: | ||
description: 'Tests to run (default: osd:ciGroup10)' | ||
required: false | ||
type: string | ||
pr_number: | ||
description: 'PR Number (optional)' | ||
required: false | ||
type: number | ||
|
||
env: | ||
TEST_REPO: ${{ inputs.test_repo != '' && inputs.test_repo || 'opensearch-project/opensearch-dashboards-functional-test' }} | ||
TEST_BRANCH: "${{ inputs.test_branch != '' && inputs.test_branch || github.base_ref }}" | ||
FTR_PATH: 'ftr' | ||
CYPRESS_BROWSER: 'chromium' | ||
CYPRESS_VISBUILDER_ENABLED: true | ||
CYPRESS_DATASOURCE_MANAGEMENT_ENABLED: false | ||
OSD_SNAPSHOT_SKIP_VERIFY_CHECKSUM: true | ||
NODE_OPTIONS: '--max-old-space-size=6144 --dns-result-order=ipv4first' | ||
LATEST_VERSION: '2.17.0' | ||
|
||
jobs: | ||
cypress-tests: | ||
runs-on: ubuntu-latest | ||
environment: flint-test | ||
container: | ||
image: docker://opensearchstaging/ci-runner:ci-runner-rockylinux8-opensearch-dashboards-integtest-v2 | ||
options: --user 1001 | ||
env: | ||
START_CMD: 'node scripts/opensearch_dashboards --dev --no-base-path --no-watch --savedObjects.maxImportPayloadBytes=10485760 --server.maxPayloadBytes=1759977 --logging.json=false --data.search.aggs.shardDelay.enabled=true --csp.warnLegacyBrowsers=false --uiSettings.overrides["query:enhancements:enabled"]=true --uiSettings.overrides[''home:useNewHomePage'']=true --data_source.enabled=true --workspace.enabled=true --opensearch.ignoreVersionMismatch=true' | ||
OPENSEARCH_SNAPSHOT_CMD: '/bin/bash -c "./opensearch-2.17.0/opensearch-tar-install.sh &"' | ||
name: Run cypress tests (osd:ciGroup10) | ||
steps: | ||
- name: Checkout code | ||
uses: actions/checkout@v2 | ||
|
||
- name: Setup Node | ||
uses: actions/setup-node@v2 | ||
with: | ||
node-version-file: '.nvmrc' | ||
registry-url: 'https://registry.npmjs.org' | ||
|
||
- name: Setup Yarn | ||
run: | | ||
npm uninstall -g yarn | ||
npm i -g [email protected] | ||
- name: Run bootstrap | ||
run: yarn osd bootstrap | ||
|
||
- name: Build plugins | ||
run: node scripts/build_opensearch_dashboards_platform_plugins --no-examples --workers 12 | ||
|
||
- name: Checkout FT repo | ||
uses: actions/checkout@v2 | ||
with: | ||
path: ${{ env.FTR_PATH }} | ||
repository: ${{ env.TEST_REPO }} | ||
ref: '${{ env.TEST_BRANCH }}' | ||
|
||
- name: Setup spec files | ||
if: ${{ inputs.specs == '' }} | ||
shell: bash | ||
run: | | ||
DASHBOARDS_SPEC="$(yarn --silent osd:ciGroup10)" | ||
echo "DASHBOARDS_SPEC=${DASHBOARDS_SPEC}" >> $GITHUB_ENV | ||
echo "DASHBOARDS_SPEC=${DASHBOARDS_SPEC}" | ||
- name: Download OpenSearch | ||
uses: suisei-cn/[email protected] | ||
with: | ||
url: https://artifacts.opensearch.org/releases/bundle/opensearch/${{ env.LATEST_VERSION }}/opensearch-${{ env.LATEST_VERSION }}-linux-x64.tar.gz | ||
|
||
- name: Extract OpenSearch | ||
run: | | ||
tar -xzf opensearch-*.tar.gz | ||
rm -f opensearch-*.tar.gz | ||
shell: bash | ||
|
||
- name: Remove security plugin | ||
run: | | ||
/bin/bash -c "yes | ./opensearch-${{ env.LATEST_VERSION }}/bin/opensearch-plugin remove opensearch-security" | ||
shell: bash | ||
|
||
- name: Run OpenSearch | ||
run: | | ||
/bin/bash -c "./opensearch-2.17.0/opensearch-tar-install.sh &" | ||
sleep 30 | ||
shell: bash | ||
|
||
- name: Clear Cypress Cache | ||
run: npx cypress cache clear | ||
|
||
- name: Run Dashboards Cypress tests with query enhancements | ||
uses: cypress-io/github-action@v6 | ||
env: | ||
S3_CONNECTION_URL: ${{ secrets.S3_CONNECTION_URL }} | ||
S3_CONNECTION_USERNAME: ${{ secrets.S3_CONNECTION_USERNAME }} | ||
S3_CONNECTION_PASSWORD: ${{ secrets.S3_CONNECTION_PASSWORD }} | ||
with: | ||
install-command: npx cypress install --force | ||
start: ${{ env.START_CMD }} | ||
wait-on: 'http://localhost:9200, http://localhost:5601' | ||
command: yarn cypress:run-without-security --browser ${{ env.CYPRESS_BROWSER }} --spec ${{ env.DASHBOARDS_SPEC }} | ||
|
||
- name: Upload Dashboards screenshots | ||
if: failure() | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: dashboards-cypress-screenshots-10 | ||
path: cypress/screenshots | ||
retention-days: 1 | ||
|
||
- name: Upload Dashboards repo videos | ||
uses: actions/upload-artifact@v4 | ||
if: always() | ||
with: | ||
name: dashboards-cypress-videos-10 | ||
path: cypress/videos | ||
retention-days: 1 | ||
|
||
- name: Upload Dashboards repo results | ||
uses: actions/upload-artifact@v4 | ||
if: always() | ||
with: | ||
name: dashboards-cypress-results-10 | ||
path: cypress/results | ||
retention-days: 1 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
test: | ||
- Adding Cypress Tests for S3 Datasets ([#9113](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/9113)) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
142 changes: 142 additions & 0 deletions
142
...re-opensearch-dashboards/opensearch-dashboards/apps/query_enhancements/s3_dataset.spec.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,142 @@ | ||
/* | ||
* Copyright OpenSearch Contributors | ||
* SPDX-License-Identifier: Apache-2.0 | ||
*/ | ||
|
||
import { | ||
DS_API, | ||
DSM_API, | ||
S3_CLUSTER, | ||
} from '../../../../../utils/apps/query_enhancements/constants'; | ||
import { WORKSPACE_NAME } from '../../../../../utils/apps/constants'; | ||
|
||
let dataSourceId = ''; | ||
const definedS3Variables = !S3_CLUSTER.url; | ||
|
||
(definedS3Variables ? describe.skip : describe)( | ||
'S3 Dataset', | ||
{ defaultCommandTimeout: 120000 }, | ||
() => { | ||
before(() => { | ||
cy.request({ | ||
method: 'POST', | ||
url: `${DSM_API}`, | ||
headers: { | ||
'osd-xsrf': true, | ||
}, | ||
body: { | ||
dataSourceAttr: { | ||
endpoint: S3_CLUSTER.url, | ||
auth: { | ||
type: 'username_password', | ||
credentials: { | ||
username: S3_CLUSTER.username, | ||
password: S3_CLUSTER.password, | ||
}, | ||
}, | ||
}, | ||
}, | ||
}).then((metaRes) => { | ||
if (metaRes && metaRes.body) { | ||
cy.request({ | ||
method: 'POST', | ||
url: `${DS_API.CREATE_DATA_SOURCE}`, | ||
headers: { | ||
'osd-xsrf': true, | ||
'Content-Type': 'application/json', | ||
}, | ||
body: { | ||
attributes: { | ||
title: S3_CLUSTER.name, | ||
description: '', | ||
...metaRes.body, | ||
endpoint: S3_CLUSTER.url, | ||
auth: { | ||
type: 'username_password', | ||
credentials: { | ||
username: S3_CLUSTER.username, | ||
password: S3_CLUSTER.password, | ||
}, | ||
}, | ||
}, | ||
}, | ||
}).then((resp) => { | ||
if (resp && resp.body && resp.body.id) { | ||
dataSourceId = resp.body.id; | ||
} | ||
}); | ||
} | ||
}); | ||
}); | ||
|
||
after(() => { | ||
cy.request({ | ||
method: 'DELETE', | ||
url: `${DS_API.DELETE_DATA_SOURCE}${dataSourceId}`, | ||
body: { force: false }, | ||
headers: { | ||
'osd-xsrf': true, | ||
}, | ||
}); | ||
}); | ||
|
||
describe('Run S3 Query', () => { | ||
beforeEach(() => { | ||
// Create workspace | ||
cy.deleteWorkspaceByName(WORKSPACE_NAME); | ||
cy.visit('/app/home'); | ||
cy.createInitialWorkspaceWithDataSource(S3_CLUSTER.name, WORKSPACE_NAME); | ||
}); | ||
afterEach(() => { | ||
cy.deleteWorkspaceByName(WORKSPACE_NAME); | ||
}); | ||
|
||
it('with SQL', function () { | ||
cy.getElementByTestId(`datasetSelectorButton`).click(); | ||
cy.getElementByTestId(`datasetSelectorAdvancedButton`).click(); | ||
|
||
cy.get(`[title="S3 Connections"]`).click(); | ||
cy.get(`[title="BasicS3Connection"]`).click(); | ||
cy.get(`[title="mys3"]`).click(); | ||
cy.get(`[title="default"]`).click(); | ||
cy.get(`[title="http_logs"]`).click(); | ||
cy.getElementByTestId('datasetSelectorNext').click(); | ||
cy.get(`[class="euiModalHeader__title"]`).should('contain', 'Step 2: Configure data'); | ||
|
||
cy.getElementByTestId('advancedSelectorLanguageSelect').select('OpenSearch SQL'); | ||
cy.getElementByTestId('advancedSelectorConfirmButton').click(); | ||
cy.waitForLoader(true); | ||
cy.waitForSearch(); | ||
|
||
cy.getElementByTestId('queryEditorLanguageSelector').should('contain', 'OpenSearch SQL'); | ||
cy.get(`[data-test-subj="queryResultCompleteMsg"]`).should('be.visible'); | ||
cy.getElementByTestId('docTable').should('be.visible'); | ||
cy.getElementByTestId('docTable').find('tr').should('have.length', 11); | ||
}); | ||
|
||
// Skipping until #8922 is merged in | ||
it.skip('with PPL', function () { | ||
cy.getElementByTestId(`datasetSelectorButton`).click(); | ||
cy.getElementByTestId(`datasetSelectorAdvancedButton`).click(); | ||
|
||
cy.get(`[title="S3 Connections"]`).click(); | ||
cy.get(`[title="BasicS3Connection"]`).click(); | ||
cy.get(`[title="mys3"]`).click(); | ||
cy.get(`[title="default"]`).click(); | ||
cy.get(`[title="http_logs"]`).click(); | ||
cy.getElementByTestId('datasetSelectorNext').click(); | ||
cy.get(`[class="euiModalHeader__title"]`).should('contain', 'Step 2: Configure data'); | ||
|
||
cy.getElementByTestId('advancedSelectorLanguageSelect').select('PPL'); | ||
cy.getElementByTestId('advancedSelectorConfirmButton').click(); | ||
cy.waitForLoader(true); | ||
cy.waitForSearch(); | ||
|
||
cy.getElementByTestId('queryEditorLanguageSelector').should('contain', 'PPL'); | ||
cy.get(`[data-test-subj="queryResultCompleteMsg"]`).should('be.visible'); | ||
cy.getElementByTestId('docTable').should('be.visible'); | ||
cy.getElementByTestId('docTable').find('tr').should('have.length', 11); | ||
}); | ||
}); | ||
} | ||
); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters