From 2ae80625bde545c18dba6b149c43faa7bdb518e7 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Fri, 27 Oct 2023 19:33:13 +0000 Subject: [PATCH] [CI][Test] Add plugin functional tests on GitHub Actions (#5383) Add tests for plugin functional on GitHub Actions. Skip doc tests because of: https://github.com/opensearch-project/OpenSearch-Dashboards/issues/5370 * Add tests for plugin functional * add changelog * Skip app link test and fix core plugins test Issue resolved: https://github.com/opensearch-project/OpenSearch-Dashboards/issues/5382 Signed-off-by: abbyhu2000 (cherry picked from commit b796940fabf2b96e1ed275b5cea9002b79ff8876) Signed-off-by: github-actions[bot] # Conflicts: # CHANGELOG.md --- .github/workflows/build_and_test_workflow.yml | 81 +++++++++++++++++++ test/plugin_functional/config.ts | 4 +- .../test_suites/core_plugins/ui_settings.ts | 5 +- 3 files changed, 87 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build_and_test_workflow.yml b/.github/workflows/build_and_test_workflow.yml index 55497ea067b2..a836cf3e1085 100644 --- a/.github/workflows/build_and_test_workflow.yml +++ b/.github/workflows/build_and_test_workflow.yml @@ -212,6 +212,87 @@ jobs: test/*/failure_debug/ test/*/screenshots/ + plugin-functional-tests: + name: Run plugin functional tests on ${{ matrix.name }} + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest, windows-latest] + include: + - os: ubuntu-latest + name: Linux + - os: windows-latest + name: Windows + runs-on: ${{ matrix.os }} + steps: + - run: echo Running plugin functional tests + + - name: Configure git's autocrlf (Windows only) + if: matrix.os == 'windows-latest' + run: | + git config --global core.autocrlf false + + - name: Checkout code + uses: actions/checkout@v3 + + - name: Setup JDK (Windows only) + if: matrix.os == 'windows-latest' + uses: actions/setup-java@v3 + with: + java-version: '11' + distribution: 'adopt' + + - name: Setup Node + uses: actions/setup-node@v3 + with: + node-version-file: '.nvmrc' + registry-url: 'https://registry.npmjs.org' + + - name: Setup Yarn + run: | + npm uninstall -g yarn + npm i -g yarn@1.22.10 + yarn config set network-timeout 1000000 -g + + - name: Configure Yarn Cache (Linux) + if: matrix.os != 'windows-latest' + run: echo "YARN_CACHE_LOCATION=$(yarn cache dir)" >> $GITHUB_ENV + + - name: Initialize Yarn Cache + uses: actions/cache@v3 + if: matrix.os != 'windows-latest' + with: + path: ${{ env.YARN_CACHE_LOCATION }} + key: yarn-${{ hashFiles('**/yarn.lock') }} + restore-keys: | + yarn- + + - name: Setup chromedriver + run: node scripts/upgrade_chromedriver.js + + - name: Run bootstrap (Linux) + if: matrix.os != 'windows-latest' + run: yarn osd bootstrap + + - name: Run bootstrap (Windows) + if: matrix.os == 'windows-latest' + run: yarn osd bootstrap || yarn osd bootstrap + + - name: Build plugins + run: node scripts/build_opensearch_dashboards_platform_plugins --no-examples --workers 10 --scan-dir "./test/plugin_functional/plugins" + + - name: Run functional plugin tests + id: plugin-ftr-tests + run: node scripts/functional_tests.js --config test/plugin_functional/config.ts + + - uses: actions/upload-artifact@v3 + if: failure() + with: + name: failure-artifacts-plugin-functional-${{ matrix.os }} + path: | + test/*/failure_debug/ + test/*/screenshots/ + build-min-artifact-tests: name: Build min release artifacts on ${{ matrix.name }} strategy: diff --git a/test/plugin_functional/config.ts b/test/plugin_functional/config.ts index ce027815a57f..46f402161e4d 100644 --- a/test/plugin_functional/config.ts +++ b/test/plugin_functional/config.ts @@ -49,8 +49,8 @@ export default async function ({ readConfigFile }: FtrConfigProviderContext) { require.resolve('./test_suites/core_plugins'), require.resolve('./test_suites/management'), require.resolve('./test_suites/doc_views'), - require.resolve('./test_suites/doc_views_links'), - require.resolve('./test_suites/application_links'), + // require.resolve('./test_suites/doc_views_links'), + // require.resolve('./test_suites/application_links'), require.resolve('./test_suites/data_plugin'), require.resolve('./test_suites/dashboard_listing_plugin'), ], diff --git a/test/plugin_functional/test_suites/core_plugins/ui_settings.ts b/test/plugin_functional/test_suites/core_plugins/ui_settings.ts index 712e6b21bbdb..c27e5d989578 100644 --- a/test/plugin_functional/test_suites/core_plugins/ui_settings.ts +++ b/test/plugin_functional/test_suites/core_plugins/ui_settings.ts @@ -70,7 +70,10 @@ export default function ({ getService, getPageObjects }: PluginFunctionalProvide }); it('server plugins have access to registered settings', async () => { - await supertest.get('/api/ui-settings-plugin').expect(200).expect({ uiSettingsValue: 2 }); + const result = await supertest.get('/api/ui-settings-plugin'); + expect(result.statusCode).to.be(200); + expect(Object.keys(result.body).length).to.be(1); + expect(Number(result.body.uiSettingsValue)).to.be(2); }); }); }