From a2b3a3d8d71e838330e5fe75267de251ebc05512 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 28 Sep 2024 20:55:28 +0200 Subject: [PATCH] tests: reduce e2e test flakyness --- e2e/trade.spec.ts | 20 +++++++++++++++++--- src/components.d.ts | 24 ++++++++++++++++++++++++ 2 files changed, 41 insertions(+), 3 deletions(-) diff --git a/e2e/trade.spec.ts b/e2e/trade.spec.ts index 34601367..0a975450 100644 --- a/e2e/trade.spec.ts +++ b/e2e/trade.spec.ts @@ -101,9 +101,21 @@ test.describe('Trade', () => { await expect(page.getByText('Config reloaded successfully.')).toBeInViewport(); }); test('Trade page - drag and drop', async ({ page }) => { - await page.goto('/trade'); - - const multiPane = page.locator('.drag-header', { hasText: 'Multi Pane' }); + await Promise.all([ + page.goto('/trade'), + // Wait for network requests + // page.waitForResponse('**/ping'), + page.waitForResponse('**/status'), + page.waitForResponse('**/profit'), + page.waitForResponse('**/balance'), + // page.waitForResponse('**/trades'), + page.waitForResponse('**/whitelist'), + page.waitForResponse('**/blacklist'), + page.waitForResponse('**/locks'), + ]); + // Wait for dynamic layout to settle + await page.waitForTimeout(1000); + const multiPane = await page.locator('.drag-header', { hasText: 'Multi Pane' }); const multiPanebb = await multiPane.boundingBox(); @@ -111,6 +123,8 @@ test.describe('Trade', () => { await page.getByText('Lock layout').uncheck(); const chartHeader = await page.locator('.drag-header:has-text("Chart")'); + // Click outside of popup to ensure it's closed + // await chartHeader.click(); await expect(multiPane).toBeInViewport(); await expect(chartHeader).toBeInViewport(); diff --git a/src/components.d.ts b/src/components.d.ts index be3e7e5b..9ee2a284 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -23,6 +23,8 @@ declare module 'vue' { BaseStringList: typeof import('./components/general/BaseStringList.vue')['default'] BAvatar: typeof import('bootstrap-vue-next/components/BAvatar')['BAvatar'] BButton: typeof import('bootstrap-vue-next/components/BButton')['BButton'] + BCard: typeof import('bootstrap-vue-next/components/BCard')['BCard'] + BCardBody: typeof import('bootstrap-vue-next/components/BCard')['BCardBody'] BCollapse: typeof import('bootstrap-vue-next/components/BCollapse')['BCollapse'] BDropdown: typeof import('bootstrap-vue-next/components/BDropdown')['BDropdown'] BDropdownDivider: typeof import('bootstrap-vue-next/components/BDropdown')['BDropdownDivider'] @@ -30,6 +32,7 @@ declare module 'vue' { BFormCheckbox: typeof import('bootstrap-vue-next/components/BFormCheckbox')['BFormCheckbox'] BFormGroup: typeof import('bootstrap-vue-next/components/BFormGroup')['BFormGroup'] BFormInput: typeof import('bootstrap-vue-next/components/BFormInput')['BFormInput'] + BFormRadio: typeof import('bootstrap-vue-next/components/BFormRadio')['BFormRadio'] BFormRadioGroup: typeof import('bootstrap-vue-next/components/BFormRadio')['BFormRadioGroup'] BFormSelect: typeof import('bootstrap-vue-next/components/BFormSelect')['BFormSelect'] BFormTextarea: typeof import('bootstrap-vue-next/components/BFormTextarea')['BFormTextarea'] @@ -59,8 +62,14 @@ declare module 'vue' { BSpinner: typeof import('bootstrap-vue-next/components/BSpinner')['BSpinner'] BTab: typeof import('bootstrap-vue-next/components/BTabs')['BTab'] BTable: typeof import('bootstrap-vue-next/components/BTable')['BTable'] + BTableSimple: typeof import('bootstrap-vue-next/components/BTable')['BTableSimple'] BTabs: typeof import('bootstrap-vue-next/components/BTabs')['BTabs'] + BTbody: typeof import('bootstrap-vue-next/components/BTable')['BTbody'] + BTd: typeof import('bootstrap-vue-next/components/BTable')['BTd'] + BTh: typeof import('bootstrap-vue-next/components/BTable')['BTh'] + BThead: typeof import('bootstrap-vue-next/components/BTable')['BThead'] BToast: typeof import('bootstrap-vue-next/components/BToast')['BToast'] + BTr: typeof import('bootstrap-vue-next/components/BTable')['BTr'] CandleChart: typeof import('./components/charts/CandleChart.vue')['default'] CandleChartContainer: typeof import('./components/charts/CandleChartContainer.vue')['default'] CopyableTextfield: typeof import('./components/general/CopyableTextfield.vue')['default'] @@ -76,17 +85,31 @@ declare module 'vue' { FreqaiModelSelect: typeof import('./components/ftbot/FreqaiModelSelect.vue')['default'] HourlyChart: typeof import('./components/charts/HourlyChart.vue')['default'] IMdiAlert: typeof import('~icons/mdi/alert')['default'] + IMdiArrowDownThick: typeof import('~icons/mdi/arrow-down-thick')['default'] + IMdiArrowDownThin: typeof import('~icons/mdi/arrow-down-thin')['default'] + IMdiArrowRight: typeof import('~icons/mdi/arrow-right')['default'] + IMdiArrowRightBoldBoxOutline: typeof import('~icons/mdi/arrow-right-bold-box-outline')['default'] + IMdiArrowUpThin: typeof import('~icons/mdi/arrow-up-thin')['default'] IMdiBank: typeof import('~icons/mdi/bank')['default'] IMdiBrightness6: typeof import('~icons/mdi/brightness6')['default'] IMdiCancel: typeof import('~icons/mdi/cancel')['default'] + IMdiChartBellCurveCumulative: typeof import('~icons/mdi/chart-bell-curve-cumulative')['default'] + IMdiChartTimelineVariantShimmer: typeof import('~icons/mdi/chart-timeline-variant-shimmer')['default'] IMdiCheck: typeof import('~icons/mdi/check')['default'] IMdiCheckCircle: typeof import('~icons/mdi/check-circle')['default'] + IMdiChevronDown: typeof import('~icons/mdi/chevron-down')['default'] + IMdiChevronLeft: typeof import('~icons/mdi/chevron-left')['default'] + IMdiChevronRight: typeof import('~icons/mdi/chevron-right')['default'] + IMdiChevronUp: typeof import('~icons/mdi/chevron-up')['default'] IMdiCircle: typeof import('~icons/mdi/circle')['default'] IMdiClose: typeof import('~icons/mdi/close')['default'] IMdiCloseBox: typeof import('~icons/mdi/close-box')['default'] IMdiCloseBoxMultiple: typeof import('~icons/mdi/close-box-multiple')['default'] + IMdiCloudDownload: typeof import('~icons/mdi/cloud-download')['default'] IMdiCog: typeof import('~icons/mdi/cog')['default'] + IMdiCompareHorizontal: typeof import('~icons/mdi/compare-horizontal')['default'] IMdiContentCopy: typeof import('~icons/mdi/content-copy')['default'] + IMdiContentSave: typeof import('~icons/mdi/content-save')['default'] IMdiDelete: typeof import('~icons/mdi/delete')['default'] IMdiDiceMultiple: typeof import('~icons/mdi/dice-multiple')['default'] IMdiEye: typeof import('~icons/mdi/eye')['default'] @@ -110,6 +133,7 @@ declare module 'vue' { IMdiRobot: typeof import('~icons/mdi/robot')['default'] IMdiRunFast: typeof import('~icons/mdi/run-fast')['default'] IMdiStop: typeof import('~icons/mdi/stop')['default'] + IMdiTableEye: typeof import('~icons/mdi/table-eye')['default'] IMdiTriangle: typeof import('~icons/mdi/triangle')['default'] IMdiTriangleDown: typeof import('~icons/mdi/triangle-down')['default'] IMdiViewDashboardOutline: typeof import('~icons/mdi/view-dashboard-outline')['default']