From 8916c90a6cf72afb3aaec749a58af6952862e8c0 Mon Sep 17 00:00:00 2001 From: Lachlan Reynolds Date: Mon, 25 May 2026 09:59:53 +1200 Subject: [PATCH 01/10] Add UI tests --- .github/workflows/matomo-tests.yml | 22 +++ tests/Fixtures/SwaggerPageFixture.php | 187 ++++++++++++++++++ tests/UI/ApiReference_spec.js | 115 +++++++++++ .../ApiReference_empty_search.png | Bin 0 -> 6057 bytes .../ApiReference_expanded_plugin.png | Bin 0 -> 19022 bytes .../ApiReference_filtered_plugin.png | Bin 0 -> 4678 bytes vue/dist/ApiReference.css | 2 +- vue/dist/ApiReference.umd.js | 56 +++--- vue/dist/ApiReference.umd.min.js | 2 +- vue/src/SwaggerPage/SwaggerUiPanel.vue | 17 ++ 10 files changed, 375 insertions(+), 26 deletions(-) create mode 100644 tests/Fixtures/SwaggerPageFixture.php create mode 100644 tests/UI/ApiReference_spec.js create mode 100644 tests/UI/expected-ui-screenshots/ApiReference_empty_search.png create mode 100644 tests/UI/expected-ui-screenshots/ApiReference_expanded_plugin.png create mode 100644 tests/UI/expected-ui-screenshots/ApiReference_filtered_plugin.png diff --git a/.github/workflows/matomo-tests.yml b/.github/workflows/matomo-tests.yml index 50ce7f0..5c62631 100644 --- a/.github/workflows/matomo-tests.yml +++ b/.github/workflows/matomo-tests.yml @@ -56,3 +56,25 @@ jobs: redis-service: true artifacts-pass: ${{ secrets.ARTIFACTS_PASS }} upload-artifacts: ${{ matrix.php == '7.4' && matrix.target == 'maximum_supported_matomo' }} + artifacts-protected: true + github-token: ${{ secrets.TESTS_ACCESS_TOKEN || secrets.GITHUB_TOKEN }} + UI: + runs-on: ubuntu-24.04 + steps: + - uses: actions/checkout@v3 + with: + lfs: true + persist-credentials: false + - name: running tests + uses: matomo-org/github-action-tests@main + with: + plugin-name: 'ApiReference' + matomo-test-branch: 'maximum_supported_matomo' + test-type: 'UI' + php-version: 'matomo5_max_php' + node-version: '16' + redis-service: true + artifacts-pass: ${{ secrets.ARTIFACTS_PASS }} + upload-artifacts: true + artifacts-protected: true + github-token: ${{ secrets.TESTS_ACCESS_TOKEN || secrets.GITHUB_TOKEN }} diff --git a/tests/Fixtures/SwaggerPageFixture.php b/tests/Fixtures/SwaggerPageFixture.php new file mode 100644 index 0000000..10f014e --- /dev/null +++ b/tests/Fixtures/SwaggerPageFixture.php @@ -0,0 +1,187 @@ +setUpWebsite(); + $this->markApiReferenceAsInstalled(); + $this->writeOpenApiSpecFixtures(); + } + + public function tearDown(): void + { + $this->removeOpenApiSpecFixtures(); + } + + private function setUpWebsite(): void + { + if (!self::siteCreated($this->idSite)) { + $idSite = self::createWebsite($this->dateTime); + $this->assertSame($this->idSite, $idSite); + } + } + + private function writeOpenApiSpecFixtures(): void + { + $resolver = new PathResolver(); + $specDirectory = $resolver->getSpecDirectory(); + + if (!is_dir($specDirectory)) { + mkdir($specDirectory, 0777, true); + } + + file_put_contents( + $this->getReferrersSpecPath(), + json_encode($this->getReferrersSpec(), JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES) + ); + } + + private function markApiReferenceAsInstalled(): void + { + (new Updater())->markComponentSuccessfullyUpdated('ApiReference', '5.0.0'); + } + + private function removeOpenApiSpecFixtures(): void + { + $specPath = $this->getReferrersSpecPath(); + + if (is_file($specPath)) { + unlink($specPath); + } + } + + private function getReferrersSpecPath(): string + { + return (new PathResolver())->getSpecFilePath('Referrers', ApiReference::DEFAULT_SPEC_VERSION); + } + + /** + * @return array + */ + private function getReferrersSpec(): array + { + $description = 'Returns example reporting data for referrer types.'; + + return [ + 'openapi' => '3.1.0', + 'info' => [ + 'title' => 'Reporting API for Referrers plugin', + 'version' => ApiReference::DEFAULT_SPEC_VERSION, + 'description' => 'Fixture-backed OpenAPI data for ApiReference UI screenshot tests.', + ], + 'tags' => [ + [ + 'name' => 'Referrers', + 'description' => 'Referrer reporting endpoints.', + ], + ], + 'paths' => [ + '/index.php?module=API&method=Referrers.getReferrerType' => [ + 'get' => [ + 'tags' => ['Referrers'], + 'summary' => 'Get referrer types', + 'description' => $description, + 'parameters' => [ + [ + 'name' => 'idSite', + 'in' => 'query', + 'required' => true, + 'schema' => ['type' => 'integer'], + ], + [ + 'name' => 'period', + 'in' => 'query', + 'required' => true, + 'schema' => ['type' => 'string'], + ], + [ + 'name' => 'date', + 'in' => 'query', + 'required' => true, + 'schema' => ['type' => 'string'], + ], + ], + 'responses' => [ + '200' => [ + 'description' => 'Successful response', + 'content' => [ + 'application/json' => [ + 'schema' => [ + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'label' => ['type' => 'string'], + 'nb_visits' => ['type' => 'integer'], + ], + ], + ], + ], + ], + ], + ], + ], + ], + '/index.php?module=API&method=Referrers.getCampaigns' => [ + 'post' => [ + 'tags' => ['Referrers'], + 'summary' => 'Get campaigns', + 'description' => 'Returns example campaign reporting data.', + 'requestBody' => [ + 'required' => false, + 'content' => [ + 'application/x-www-form-urlencoded' => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'segment' => ['type' => 'string'], + ], + ], + ], + ], + ], + 'responses' => [ + '200' => [ + 'description' => 'Successful response', + 'content' => [ + 'application/json' => [ + 'schema' => [ + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'label' => ['type' => 'string'], + 'revenue' => ['type' => 'number'], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ]; + } +} diff --git a/tests/UI/ApiReference_spec.js b/tests/UI/ApiReference_spec.js new file mode 100644 index 0000000..21a9c04 --- /dev/null +++ b/tests/UI/ApiReference_spec.js @@ -0,0 +1,115 @@ +/*! + * Matomo - free/libre analytics platform + * + * ApiReference screenshot tests. + * + * @link https://matomo.org + * @license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + */ + +describe('ApiReference', function () { + this.fixture = 'Piwik\\Plugins\\ApiReference\\tests\\Fixtures\\SwaggerPageFixture'; + + const pageUrl = '?module=ApiReference&action=swagger&idSite=1&period=day&date=2010-01-03'; + const targetPlugin = 'Referrers'; + const searchInputSelector = '.searchInput'; + + before(function () { + testEnvironment.pluginsToLoad = ['ApiReference']; + testEnvironment.testUseMockAuth = 1; + testEnvironment.overrideConfig('General', 'enable_auto_update', 0); + testEnvironment.save(); + }); + + after(function () { + delete testEnvironment.pluginsToLoad; + delete testEnvironment.configOverride.General; + testEnvironment.testUseMockAuth = 1; + testEnvironment.save(); + }); + + async function moveMouseAway() { + await page.mouse.move(-10, -10); + } + + async function waitForUiToSettle(delay = 150) { + await page.waitForNetworkIdle(); + await page.waitForTimeout(delay); + } + + async function loadSwaggerPage() { + await page.goto(pageUrl); + await page.waitForSelector(searchInputSelector); + await page.waitForSelector('.pluginList .pluginCard'); + await waitForUiToSettle(); + await moveMouseAway(); + } + + async function searchFor(term) { + await page.evaluate((selector, value) => { + const input = document.querySelector(selector); + + if (!input) { + throw new Error(`Unable to find ${selector}`); + } + + input.value = value; + input.dispatchEvent(new Event('input', { bubbles: true })); + input.dispatchEvent(new Event('change', { bubbles: true })); + }, searchInputSelector, term); + await page.waitForTimeout(150); + await moveMouseAway(); + } + + async function expandPlugin(pluginName) { + await page.evaluate((targetName) => { + const pluginButtons = Array.from(document.querySelectorAll('.pluginToggle')); + const pluginButton = pluginButtons.find((button) => { + const pluginNameElement = button.querySelector('.pluginName'); + return pluginNameElement && pluginNameElement.textContent.trim() === targetName; + }); + + if (!pluginButton) { + throw new Error(`Unable to find plugin card for ${targetName}`); + } + + pluginButton.click(); + }, pluginName); + + await page.waitForSelector('.pluginCard--expanded'); + await page.waitForSelector('.pluginCard--expanded .swaggerMount--ready'); + await page.waitForSelector('.pluginCard--expanded .swagger-ui .opblock-tag-section'); + await waitForUiToSettle(250); + await moveMouseAway(); + } + + async function waitForSingleVisiblePlugin(pluginName) { + await page.waitForFunction((expectedPluginName) => { + const visiblePluginNames = Array.from(document.querySelectorAll('.pluginCard')) + .filter((card) => card.offsetParent !== null) + .map((card) => card.querySelector('.pluginName')?.textContent?.trim()) + .filter(Boolean); + + return visiblePluginNames.length === 1 && visiblePluginNames[0] === expectedPluginName; + }, {}, pluginName); + } + + it('should render stable search and expansion states', async function () { + await loadSwaggerPage(); + await searchFor('referrers'); + await waitForSingleVisiblePlugin(targetPlugin); + + expect(await page.screenshotSelector('.searchBar,.pluginList')).to.matchImage('filtered_plugin'); + + await searchFor('no-plugin-match'); + await page.waitForSelector('.emptyText'); + + expect(await page.screenshotSelector('.searchBar,.emptyText')).to.matchImage('empty_search'); + + await searchFor('referrers'); + await waitForSingleVisiblePlugin(targetPlugin); + await expandPlugin(targetPlugin); + + expect(await page.screenshotSelector('.pluginCard--expanded')).to.matchImage('expanded_plugin'); + }); +}); diff --git a/tests/UI/expected-ui-screenshots/ApiReference_empty_search.png b/tests/UI/expected-ui-screenshots/ApiReference_empty_search.png new file mode 100644 index 0000000000000000000000000000000000000000..e576d3014ba4a10e85db4d3b940c8bde9eab6fe8 GIT binary patch literal 6057 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 literal 0 HcmV?d00001 diff --git a/tests/UI/expected-ui-screenshots/ApiReference_expanded_plugin.png b/tests/UI/expected-ui-screenshots/ApiReference_expanded_plugin.png new file mode 100644 index 0000000000000000000000000000000000000000..d2f054a9e571e8bd6366ac6506631e66518018b5 GIT binary patch literal 19022 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 V$ffdU>+LJr7$NZ|8INDQ`Ck+Z1s4DS literal 0 HcmV?d00001 diff --git a/tests/UI/expected-ui-screenshots/ApiReference_filtered_plugin.png b/tests/UI/expected-ui-screenshots/ApiReference_filtered_plugin.png new file mode 100644 index 0000000000000000000000000000000000000000..1fa6a432f734bca9fb22ac8c1288627215a656ec GIT binary patch literal 4678 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 JtNs4xzX3E_I-LLj literal 0 HcmV?d00001 diff --git a/vue/dist/ApiReference.css b/vue/dist/ApiReference.css index ad3d531..1561b16 100644 --- a/vue/dist/ApiReference.css +++ b/vue/dist/ApiReference.css @@ -1 +1 @@ -.swaggerLoader[data-v-5be4746a]{max-height:100px;display:flex;align-items:center;justify-content:center}.swaggerMount[data-v-5be4746a]{min-height:180px;visibility:hidden}.swaggerMount--ready[data-v-5be4746a]{visibility:visible}.swaggerMount[data-v-5be4746a] .swagger-ui{border:0;border-radius:0;color:var(--theme-color-text,#3b4151);font-size:14px;line-height:1.5;padding-top:0}.page[data-v-86969ddc]{color:var(--theme-color-text,#3b4151)}.searchBar[data-v-86969ddc]{position:relative;margin-bottom:1.5rem;width:300px}.searchIcon[data-v-86969ddc]{position:absolute;top:13px;left:12px;color:var(--theme-color-text-lighter,#98a2b3);font-size:14px;pointer-events:none}.searchInput[data-v-86969ddc]{width:100%;height:38px;padding:10px 12px 10px 38px;background:var(--theme-color-background-contrast,#fff);border:1px solid var(--theme-color-border,#d0d5dd);border-radius:8px;color:var(--theme-color-text,#3b4151);font-size:14px;box-shadow:none}.searchInput[data-v-86969ddc]:focus-visible{border:1px solid var(--theme-color-focus-ring,#5b8def);outline:1px solid var(--theme-color-focus-ring,#5b8def)}.searchInput[data-v-86969ddc]::-moz-placeholder{color:var(--theme-color-text-lighter,#98a2b3)}.searchInput[data-v-86969ddc]::-ms-input-placeholder{color:var(--theme-color-text-lighter,#98a2b3)}.searchInput[data-v-86969ddc]::placeholder{color:var(--theme-color-text-lighter,#98a2b3)}.emptyText[data-v-86969ddc]{margin-bottom:0;color:var(--theme-color-text-light,#646464)}.old-api-docs-paragraph[data-v-86969ddc]{font-size:12px!important;font-style:italic}.pluginCard[data-v-86969ddc]{background:var(--theme-color-background-contrast,#fff);border:1px solid var(--theme-color-border,#d9e2ec);border-radius:4px;box-shadow:none;overflow:hidden;transition:border-color .18s ease}.pluginCard--expanded[data-v-86969ddc]{border-color:var(--theme-color-border,#cfd8e3);transform-origin:top center}.pluginToggle[data-v-86969ddc]{width:100%;padding:16px 20px;border:0;outline:none;background:var(--theme-color-background-contrast,#fff);display:flex;align-items:center;color:inherit;cursor:pointer;font:inherit;text-align:left}.pluginToggle[data-v-86969ddc]:focus-visible{box-shadow:inset 0 0 0 2px var(--theme-color-focus-ring,#cfd8e3)}.pluginHeader[data-v-86969ddc]{display:flex;align-items:center;gap:12px}.pluginChevron[data-v-86969ddc]{flex:0 0 12px;color:var(--theme-color-text-light,#5b6b7c);font-size:12px;display:inline-flex;align-items:center;justify-content:center}.pluginName[data-v-86969ddc]{font-size:15px;font-weight:500}.pluginBody[data-v-86969ddc]{position:relative;padding:0}.pluginBody[data-v-86969ddc]:before{content:"";position:absolute;top:0;left:20px;right:20px;border-top:1px solid var(--theme-color-border,#e6edf5)} \ No newline at end of file +.swaggerLoader[data-v-590bd90f]{max-height:100px;display:flex;align-items:center;justify-content:center}.swaggerMount[data-v-590bd90f]{min-height:180px;visibility:hidden}.swaggerMount--ready[data-v-590bd90f]{visibility:visible}.swaggerMount[data-v-590bd90f] .swagger-ui{border:0;border-radius:0;color:var(--theme-color-text,#3b4151);font-size:14px;line-height:1.5;padding-top:0}.page[data-v-86969ddc]{color:var(--theme-color-text,#3b4151)}.searchBar[data-v-86969ddc]{position:relative;margin-bottom:1.5rem;width:300px}.searchIcon[data-v-86969ddc]{position:absolute;top:13px;left:12px;color:var(--theme-color-text-lighter,#98a2b3);font-size:14px;pointer-events:none}.searchInput[data-v-86969ddc]{width:100%;height:38px;padding:10px 12px 10px 38px;background:var(--theme-color-background-contrast,#fff);border:1px solid var(--theme-color-border,#d0d5dd);border-radius:8px;color:var(--theme-color-text,#3b4151);font-size:14px;box-shadow:none}.searchInput[data-v-86969ddc]:focus-visible{border:1px solid var(--theme-color-focus-ring,#5b8def);outline:1px solid var(--theme-color-focus-ring,#5b8def)}.searchInput[data-v-86969ddc]::-moz-placeholder{color:var(--theme-color-text-lighter,#98a2b3)}.searchInput[data-v-86969ddc]::-ms-input-placeholder{color:var(--theme-color-text-lighter,#98a2b3)}.searchInput[data-v-86969ddc]::placeholder{color:var(--theme-color-text-lighter,#98a2b3)}.emptyText[data-v-86969ddc]{margin-bottom:0;color:var(--theme-color-text-light,#646464)}.old-api-docs-paragraph[data-v-86969ddc]{font-size:12px!important;font-style:italic}.pluginCard[data-v-86969ddc]{background:var(--theme-color-background-contrast,#fff);border:1px solid var(--theme-color-border,#d9e2ec);border-radius:4px;box-shadow:none;overflow:hidden;transition:border-color .18s ease}.pluginCard--expanded[data-v-86969ddc]{border-color:var(--theme-color-border,#cfd8e3);transform-origin:top center}.pluginToggle[data-v-86969ddc]{width:100%;padding:16px 20px;border:0;outline:none;background:var(--theme-color-background-contrast,#fff);display:flex;align-items:center;color:inherit;cursor:pointer;font:inherit;text-align:left}.pluginToggle[data-v-86969ddc]:focus-visible{box-shadow:inset 0 0 0 2px var(--theme-color-focus-ring,#cfd8e3)}.pluginHeader[data-v-86969ddc]{display:flex;align-items:center;gap:12px}.pluginChevron[data-v-86969ddc]{flex:0 0 12px;color:var(--theme-color-text-light,#5b6b7c);font-size:12px;display:inline-flex;align-items:center;justify-content:center}.pluginName[data-v-86969ddc]{font-size:15px;font-weight:500}.pluginBody[data-v-86969ddc]{position:relative;padding:0}.pluginBody[data-v-86969ddc]:before{content:"";position:absolute;top:0;left:20px;right:20px;border-top:1px solid var(--theme-color-border,#e6edf5)} \ No newline at end of file diff --git a/vue/dist/ApiReference.umd.js b/vue/dist/ApiReference.umd.js index 5855bde..d336e6b 100644 --- a/vue/dist/ApiReference.umd.js +++ b/vue/dist/ApiReference.umd.js @@ -96,14 +96,10 @@ return /******/ (function(modules) { // webpackBootstrap /************************************************************************/ /******/ ({ -/***/ "136e": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var _node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_7_oneOf_1_0_node_modules_vue_cli_service_node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_vue_cli_service_node_modules_vue_loader_v16_dist_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_7_oneOf_1_2_node_modules_vue_cli_service_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_cli_service_node_modules_vue_loader_v16_dist_index_js_ref_1_1_SwaggerUiPanel_vue_vue_type_style_index_0_id_5be4746a_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("ad84"); -/* harmony import */ var _node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_7_oneOf_1_0_node_modules_vue_cli_service_node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_vue_cli_service_node_modules_vue_loader_v16_dist_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_7_oneOf_1_2_node_modules_vue_cli_service_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_cli_service_node_modules_vue_loader_v16_dist_index_js_ref_1_1_SwaggerUiPanel_vue_vue_type_style_index_0_id_5be4746a_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_7_oneOf_1_0_node_modules_vue_cli_service_node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_vue_cli_service_node_modules_vue_loader_v16_dist_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_7_oneOf_1_2_node_modules_vue_cli_service_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_cli_service_node_modules_vue_loader_v16_dist_index_js_ref_1_1_SwaggerUiPanel_vue_vue_type_style_index_0_id_5be4746a_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_0__); -/* unused harmony reexport * */ +/***/ "1988": +/***/ (function(module, exports, __webpack_require__) { +// extracted by mini-css-extract-plugin /***/ }), @@ -139,10 +135,14 @@ module.exports = __WEBPACK_EXTERNAL_MODULE__8bbf__; /***/ }), -/***/ "ad84": -/***/ (function(module, exports, __webpack_require__) { +/***/ "dc2f": +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var _node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_7_oneOf_1_0_node_modules_vue_cli_service_node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_vue_cli_service_node_modules_vue_loader_v16_dist_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_7_oneOf_1_2_node_modules_vue_cli_service_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_cli_service_node_modules_vue_loader_v16_dist_index_js_ref_1_1_SwaggerUiPanel_vue_vue_type_style_index_0_id_590bd90f_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("1988"); +/* harmony import */ var _node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_7_oneOf_1_0_node_modules_vue_cli_service_node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_vue_cli_service_node_modules_vue_loader_v16_dist_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_7_oneOf_1_2_node_modules_vue_cli_service_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_cli_service_node_modules_vue_loader_v16_dist_index_js_ref_1_1_SwaggerUiPanel_vue_vue_type_style_index_0_id_590bd90f_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_7_oneOf_1_0_node_modules_vue_cli_service_node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_vue_cli_service_node_modules_vue_loader_v16_dist_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_7_oneOf_1_2_node_modules_vue_cli_service_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_cli_service_node_modules_vue_loader_v16_dist_index_js_ref_1_1_SwaggerUiPanel_vue_vue_type_style_index_0_id_590bd90f_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_0__); +/* unused harmony reexport * */ -// extracted by mini-css-extract-plugin /***/ }), @@ -298,19 +298,19 @@ function render(_ctx, _cache, $props, $setup, $data, $options) { // EXTERNAL MODULE: external "CoreHome" var external_CoreHome_ = __webpack_require__("19dc"); -// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--1-1!./plugins/ApiReference/vue/src/SwaggerPage/SwaggerUiPanel.vue?vue&type=template&id=5be4746a&scoped=true +// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--1-1!./plugins/ApiReference/vue/src/SwaggerPage/SwaggerUiPanel.vue?vue&type=template&id=590bd90f&scoped=true -const SwaggerUiPanelvue_type_template_id_5be4746a_scoped_true_withScopeId = n => (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["pushScopeId"])("data-v-5be4746a"), n = n(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["popScopeId"])(), n); -const SwaggerUiPanelvue_type_template_id_5be4746a_scoped_true_hoisted_1 = { +const SwaggerUiPanelvue_type_template_id_590bd90f_scoped_true_withScopeId = n => (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["pushScopeId"])("data-v-590bd90f"), n = n(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["popScopeId"])(), n); +const SwaggerUiPanelvue_type_template_id_590bd90f_scoped_true_hoisted_1 = { key: 0, class: "swaggerLoader" }; -const SwaggerUiPanelvue_type_template_id_5be4746a_scoped_true_hoisted_2 = ["innerHTML"]; -const SwaggerUiPanelvue_type_template_id_5be4746a_scoped_true_hoisted_3 = ["id"]; -function SwaggerUiPanelvue_type_template_id_5be4746a_scoped_true_render(_ctx, _cache, $props, $setup, $data, $options) { +const SwaggerUiPanelvue_type_template_id_590bd90f_scoped_true_hoisted_2 = ["innerHTML"]; +const SwaggerUiPanelvue_type_template_id_590bd90f_scoped_true_hoisted_3 = ["id"]; +function SwaggerUiPanelvue_type_template_id_590bd90f_scoped_true_render(_ctx, _cache, $props, $setup, $data, $options) { const _component_ActivityIndicator = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("ActivityIndicator"); const _component_Alert = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("Alert"); - return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])(external_commonjs_vue_commonjs2_vue_root_Vue_["Fragment"], null, [_ctx.isLoading && !_ctx.spec && !_ctx.displayError ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", SwaggerUiPanelvue_type_template_id_5be4746a_scoped_true_hoisted_1, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_ActivityIndicator, { + return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])(external_commonjs_vue_commonjs2_vue_root_Vue_["Fragment"], null, [_ctx.isLoading && !_ctx.spec && !_ctx.displayError ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", SwaggerUiPanelvue_type_template_id_590bd90f_scoped_true_hoisted_1, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_ActivityIndicator, { loading: true })])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.displayError ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createBlock"])(_component_Alert, { key: 1, @@ -324,16 +324,16 @@ function SwaggerUiPanelvue_type_template_id_5be4746a_scoped_true_render(_ctx, _c }, { default: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withCtx"])(() => [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", { innerHTML: _ctx.$sanitize(_ctx.missingSpecLearnMore) - }, null, 8, SwaggerUiPanelvue_type_template_id_5be4746a_scoped_true_hoisted_2)]), + }, null, 8, SwaggerUiPanelvue_type_template_id_590bd90f_scoped_true_hoisted_2)]), _: 1 })) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", { id: _ctx.swaggerContainerId, class: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["normalizeClass"])(['swaggerMount', { 'swaggerMount--ready': _ctx.isReady }]) - }, null, 10, SwaggerUiPanelvue_type_template_id_5be4746a_scoped_true_hoisted_3)], 64); + }, null, 10, SwaggerUiPanelvue_type_template_id_590bd90f_scoped_true_hoisted_3)], 64); } -// CONCATENATED MODULE: ./plugins/ApiReference/vue/src/SwaggerPage/SwaggerUiPanel.vue?vue&type=template&id=5be4746a&scoped=true +// CONCATENATED MODULE: ./plugins/ApiReference/vue/src/SwaggerPage/SwaggerUiPanel.vue?vue&type=template&id=590bd90f&scoped=true // CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--15-0!./node_modules/babel-loader/lib!./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader??ref--15-2!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--1-1!./plugins/ApiReference/vue/src/SwaggerPage/SwaggerUiPanel.vue?vue&type=script&lang=ts @@ -410,6 +410,13 @@ const copySuccessIconMarkup = ' Object.prototype.hasOwnProperty.call(object, property); + }, getSwaggerRoot() { return document.getElementById(this.swaggerContainerId); }, @@ -579,6 +586,7 @@ const copySuccessIconMarkup = '