From 95df87c293fc98c7d5fef0f68ecc4ff25385c736 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 9 Apr 2024 06:28:43 +0200 Subject: [PATCH] Add chart spec --- e2e/chart.spec.ts | 36 ++++++++++++++++++++++ e2e/helpers.ts | 4 +-- src/components/charts/PlotConfigSelect.vue | 1 + 3 files changed, 39 insertions(+), 2 deletions(-) create mode 100644 e2e/chart.spec.ts diff --git a/e2e/chart.spec.ts b/e2e/chart.spec.ts new file mode 100644 index 00000000..2d48d6c8 --- /dev/null +++ b/e2e/chart.spec.ts @@ -0,0 +1,36 @@ +import { test, expect } from '@playwright/test'; +import { setLoginInfo, defaultMocks } from './helpers'; + +test.describe('Chart', () => { + test.beforeEach(async ({ page }) => { + await defaultMocks(page); + await setLoginInfo(page); + }); + test('Chart page', async ({ page }) => { + await page.goto('/graph'); + + // await page.waitForResponse('**/pair_candles'); + await page.locator('input[title="AutoRefresh"]').click(); + // await page.click('input[title="AutoRefresh"]'); + + await page.waitForSelector('span:has-text("NoActionStrategyFut | 1m")'); + + await page.click('.form-check:has-text("Heikin Ashi")'); + + // Reload triggers a new request + await Promise.all([ + page.getByRole('button', { name: 'Refresh chart' }).click(), + + page.waitForResponse('**/pair_candles?*'), + ]); + // Disable Heikin Ashi + await page.locator('.form-check:has-text("Heikin Ashi")').click(); + // Default plotconfig exists + await expect( + page + .locator('div') + .filter({ hasText: /^Heikin Ashidefault$/ }) + .locator('#plotConfigSelect'), + ).toHaveValue('default'); + }); +}); diff --git a/e2e/helpers.ts b/e2e/helpers.ts index 3be26114..58464338 100644 --- a/e2e/helpers.ts +++ b/e2e/helpers.ts @@ -46,6 +46,8 @@ export async function defaultMocks(page: Page) { { name: '@Ping', url: '**/api/v1/ping', fixture: 'ping.json' }, { name: '@Ping', url: '**/api/v1/show_config', fixture: 'show_config.json' }, { name: '@Ping', url: '**/api/v1/pair_candles?*', fixture: 'pair_candles_btc_1m.json' }, + { name: '@Whitelist', url: '**/api/v1/whitelist', fixture: 'whitelist.json' }, + { name: '@Blacklist', url: '**/api/v1/blacklist', fixture: 'blacklist.json' }, ]; mockRequests(page, mapping); @@ -57,8 +59,6 @@ export function tradeMocks(page) { { name: '@Profit', url: '**/api/v1/profit', fixture: 'profit.json' }, { name: '@Trades', url: '**/api/v1/trades*', fixture: 'trades.json' }, { name: '@Balance', url: '**/api/v1/balance', fixture: 'balance.json' }, - { name: '@Whitelist', url: '**/api/v1/whitelist', fixture: 'whitelist.json' }, - { name: '@Blacklist', url: '**/api/v1/blacklist', fixture: 'blacklist.json' }, { name: '@Locks', url: '**/api/v1/locks', fixture: 'locks_empty.json' }, { name: '@Performance', url: '**/api/v1/performance', fixture: 'performance.json' }, { diff --git a/src/components/charts/PlotConfigSelect.vue b/src/components/charts/PlotConfigSelect.vue index 4e665924..0995a094 100644 --- a/src/components/charts/PlotConfigSelect.vue +++ b/src/components/charts/PlotConfigSelect.vue @@ -11,6 +11,7 @@ @duplicate="plotStore.duplicatePlotConfig" >