Skip to content

Commit

Permalink
Added Integration Tests Workflow (#426)
Browse files Browse the repository at this point in the history
Signed-off-by: saimedhi <[email protected]>
  • Loading branch information
saimedhi authored Oct 21, 2024
1 parent 3bf513a commit e82acac
Show file tree
Hide file tree
Showing 5 changed files with 180 additions and 1 deletion.
169 changes: 169 additions & 0 deletions .github/workflows/remote-integ-tests-workflow.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,169 @@
name: FTR E2E FF Workbench Test

on: [pull_request, push]

env:
CI: 1
TERM: xterm
OPENSEARCH_DASHBOARDS_VERSION: 'main'
OPENSEARCH_VERSION: '3.0.0'
OPENSEARCH_PLUGIN_VERSION: '3.0.0.0'

jobs:
tests:
name: Run FTR E2E FF Workbench Tests
strategy:
fail-fast: false
matrix:
os: [ ubuntu-latest ]
jdk: [ 21 ]
runs-on: ${{ matrix.os }}

steps:
- name: Set up JDK
uses: actions/setup-java@v1
with:
java-version: ${{ matrix.jdk }}

- name: Checkout Flow-Framework
uses: actions/checkout@v2
with:
path: flow-framework
repository: opensearch-project/flow-framework
ref: '${{ github.base_ref }}'

- name: Run OpenSearch with plugin
run: |
cd flow-framework
./gradlew run &
timeout 300 bash -c 'while [[ "$(curl -s -o /dev/null -w ''%{http_code}'' localhost:9200)" != "200" ]]; do sleep 5; done'
shell: bash

- name: Check OpenSearch Running on Linux
if: ${{ runner.os != 'Windows'}}
run: curl http://localhost:9200/
shell: bash

- name: Checkout OpenSearch Dashboards
uses: actions/checkout@v2
with:
path: OpenSearch-Dashboards
repository: opensearch-project/OpenSearch-Dashboards
ref: ${{ env.OPENSEARCH_DASHBOARDS_VERSION }}
fetch-depth: 0
filter: |
cypress
test
- name: Checkout FF in OpenSearch Dashboards Plugins Dir
uses: actions/checkout@v2
with:
path: OpenSearch-Dashboards/plugins/dashboards-flow-framework

- id: tool-versions
run: |
echo "node_version=$(cat .node-version)" >> $GITHUB_OUTPUT
echo "yarn_version=$(jq -r '.engines.yarn' package.json)" >> $GITHUB_OUTPUT
working-directory: OpenSearch-Dashboards
shell: bash

- uses: actions/setup-node@v1
with:
node-version: ${{ steps.tool-versions.outputs.node_version }}
registry-url: 'https://registry.npmjs.org'

- name: Setup Opensearch Dashboards
run: |
npm uninstall -g yarn
echo "Installing yarn ${{ steps.tool-versions.outputs.yarn_version }}"
npm i -g yarn@${{ steps.tool-versions.outputs.yarn_version }}
yarn cache clean
yarn add sha.js
working-directory: OpenSearch-Dashboards
shell: bash

- name: Bootstrap Opensearch Dashboards
run: |
yarn osd bootstrap --single-version=loose
working-directory: OpenSearch-Dashboards/plugins/dashboards-flow-framework

- name: Run Opensearch Dashboards with FF Installed
run: |
nohup yarn start --no-base-path --no-watch --server.host="0.0.0.0" | tee dashboard.log &
sleep 60
working-directory: OpenSearch-Dashboards

- name : Check If OpenSearch Dashboards Is Ready
if: ${{ runner.os == 'Linux' }}
run: |
if timeout 600 grep -q "bundles compiled successfully after" <(tail -n0 -f dashboard.log); then
echo "OpenSearch Dashboards compiled successfully."
else
echo "Timeout for 600 seconds reached. OpenSearch Dashboards did not finish compiling."
exit 1
fi
working-directory: OpenSearch-Dashboards

- name: Show OpenSearch Dashboards Logs
if: always()
run: cat dashboard.log
working-directory: OpenSearch-Dashboards

- name: Health check
run: |
timeout 600 bash -c 'while [[ "$(curl -k http://localhost:5601/api/status | jq -r '.status.overall.state')" != "green" ]]; do sleep 5; done'
shell: bash

- name: Check OpenSearch Dashboards Running on Linux
if: ${{ runner.os != 'Windows'}}
run: curl http://localhost:5601/api/status
shell: bash

- name: Checkout Dashboards Functional Test Repo
uses: actions/checkout@v2
with:
path: opensearch-dashboards-functional-test
repository: opensearch-project/opensearch-dashboards-functional-test
ref: ${{ env.OPENSEARCH_DASHBOARDS_VERSION }}
fetch-depth: 0

- name: Install Cypress
run: |
npm install cypress --save-dev
shell: bash
working-directory: opensearch-dashboards-functional-test

- name: Get Cypress version
id: cypress_version
run: |
echo "::set-output name=cypress_version::$(cat ./package.json | jq '.dependencies.cypress' | tr -d '"')"
working-directory: opensearch-dashboards-functional-test

- name: Finding spec files and store to output
id: finding-files
run: |
{
echo 'FILELIST<<EOF'
find cypress/integration/plugins/dashboards-flow-framework -name '*.js' -print
echo EOF
} >> "$GITHUB_ENV"
working-directory: opensearch-dashboards-functional-test

- name: Run spec files from output
run: |
env CYPRESS_NO_COMMAND_LOG=1 yarn cypress:run-without-security --browser chromium --spec 'cypress/integration/plugins/dashboards-flow-framework/*'
working-directory: opensearch-dashboards-functional-test

- name: Capture failure screenshots
uses: actions/upload-artifact@v4
if: failure()
with:
name: cypress-screenshots-${{ matrix.os }}
path: opensearch-dashboards-functional-test/cypress/screenshots

- name: Capture failure test video
uses: actions/upload-artifact@v4
if: failure()
with:
name: cypress-videos-${{ matrix.os }}
path: opensearch-dashboards-functional-test/cypress/videos
Original file line number Diff line number Diff line change
Expand Up @@ -202,13 +202,15 @@ export function SourceData(props: SourceDataProps) {
id={SOURCE_OPTIONS.MANUAL}
hasActiveFilters={selectedOption === SOURCE_OPTIONS.MANUAL}
onClick={() => setSelectedOption(SOURCE_OPTIONS.MANUAL)}
data-testid="manualEditSourceDataButton"
>
Manual
</EuiSmallFilterButton>
<EuiSmallFilterButton
id={SOURCE_OPTIONS.UPLOAD}
hasActiveFilters={selectedOption === SOURCE_OPTIONS.UPLOAD}
onClick={() => setSelectedOption(SOURCE_OPTIONS.UPLOAD)}
data-testid="uploadSourceDataButton"
>
Upload
</EuiSmallFilterButton>
Expand All @@ -220,6 +222,7 @@ export function SourceData(props: SourceDataProps) {
onClick={() =>
setSelectedOption(SOURCE_OPTIONS.EXISTING_INDEX)
}
data-testid="selectIndexSourceDataButton"
>
Existing index
</EuiSmallFilterButton>
Expand Down Expand Up @@ -281,6 +284,7 @@ export function SourceData(props: SourceDataProps) {
onClick={() => setIsEditModalOpen(false)}
fill={false}
color="primary"
data-testid="closeSourceDataButton"
>
Close
</EuiSmallButton>
Expand All @@ -306,6 +310,7 @@ export function SourceData(props: SourceDataProps) {
fill={false}
style={{ width: '100px' }}
onClick={() => setIsEditModalOpen(true)}
data-testid="editSourceDataButton"
>
{docsPopulated ? `Edit` : `Select data`}
</EuiSmallButton>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,13 +45,14 @@ export function EditQueryModal(props: EditQueryModalProps) {
<EuiModal
onClose={() => props.setModalOpen(false)}
style={{ width: '70vw' }}
data-testid="editQueryModal"
>
<EuiModalHeader>
<EuiModalHeaderTitle>
<p>{`Edit query`}</p>
</EuiModalHeaderTitle>
</EuiModalHeader>
<EuiModalBody>
<EuiModalBody data-testid="editQueryModalBody">
<EuiPopover
button={
<EuiSmallButton
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -173,6 +173,7 @@ export function ImportWorkflowModal(props: ImportWorkflowModalProps) {
onModalClose();
});
}}
data-testid="importJSONButton"
fill={true}
color="primary"
>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -159,6 +159,7 @@ export function QuickConfigureInputs(props: QuickConfigureInputsProps) {
id="optionalConfiguration"
buttonContent="Optional configuration"
initialIsOpen={false}
data-testid="optionalConfigurationButton"
>
<EuiSpacer size="m" />
<EuiCompressedFormRow
Expand All @@ -180,6 +181,7 @@ export function QuickConfigureInputs(props: QuickConfigureInputsProps) {
}
>
<EuiCompressedSuperSelect
data-testid="selectDeployedModel"
fullWidth={true}
options={deployedModels.map(
(option) =>
Expand Down Expand Up @@ -228,6 +230,7 @@ export function QuickConfigureInputs(props: QuickConfigureInputsProps) {
}`}
>
<EuiCompressedFieldText
data-testid="textFieldQuickConfigure"
fullWidth={true}
value={fieldValues?.textField || ''}
onChange={(e) => {
Expand Down

0 comments on commit e82acac

Please sign in to comment.