frequi_origin/e2e/pairlists.spec.ts

99 lines
3.1 KiB
TypeScript
Raw Normal View History

2024-04-08 18:37:40 +00:00
import { test, expect } from '@playwright/test';
import { setLoginInfo, defaultMocks } from './helpers';
test.describe('Pairlists', () => {
test.beforeEach(async ({ page }) => {
await defaultMocks(page);
page.route('**/api/v1/show_config', (route) => {
return route.fulfill({ path: `./e2e/testData/backtest/show_config_webserver.json` });
2024-04-08 18:37:40 +00:00
});
page.route('**/api/v1/pairlists/available*', (route) => {
return route.fulfill({ path: `./e2e/testData/pairlists_available.json` });
2024-04-08 18:37:40 +00:00
});
const jobID = 'c0578b6a-dd34-4bb7-b83c-492f02da2cfd';
page.route('**/api/v1/pairlists/evaluate', (route) => {
route.fulfill({
status: 200,
contentType: 'application/json',
body: JSON.stringify({
status: 'Pairlist evaluation started in background.',
job_id: jobID,
}),
});
});
page.route(`**/api/v1/background/${jobID}`, (route) => {
route.fulfill({
status: 200,
contentType: 'application/json',
body: JSON.stringify({
job_id: jobID,
job_category: 'pairlist',
status: 'success',
running: false,
progress: null,
}),
});
});
page.route(`**/api/v1/pairlists/evaluate/${jobID}`, (route) => {
route.fulfill({
status: 200,
contentType: 'application/json',
body: JSON.stringify({
error: null,
status: 'success',
result: {
whitelist: ['BTC/USDT', 'ETH/USDT', 'BNB/USDT'],
length: 3,
method: ['VolumePairList'],
},
}),
});
});
await setLoginInfo(page);
});
test('Pairlists page', async ({ page }) => {
page.goto('/');
const pairlistConfig = page.locator('a', { hasText: 'Pairlist Config' });
await Promise.all([pairlistConfig.click(), page.waitForResponse('**/pairlists/available*')]);
const volumePairList = page.locator('text="VolumePairList"');
await expect(volumePairList).toBeVisible();
const volumePairListButton = page.locator('.available-pairlists :nth-child(4) > .btn');
await expect(volumePairListButton).toBeInViewport();
await volumePairListButton.click();
const resultsButton = page.locator('.btn', { hasText: 'Results' });
// await expect(resultsButton).toHaveAttribute('value', 'Results');
await expect(resultsButton).toBeDisabled();
const copyContainer = page.locator('.copy-container');
await expect(copyContainer).toBeVisible();
await expect(copyContainer).toContainText('"method": "VolumePairList",');
const evaluateButton = page.locator('button >> text="Evaluate"');
await Promise.all([
evaluateButton.click(),
page.waitForResponse('**/evaluate'),
page.waitForResponse('**/background/*'),
page.waitForResponse('**/pairlists/evaluate/*'),
]);
await expect(resultsButton).toBeEnabled();
await expect(resultsButton).toBeChecked();
await expect(copyContainer).toContainText('"BTC/USDT",');
await expect(copyContainer).toContainText('"ETH/USDT",');
await expect(copyContainer).toContainText('"BNB/USDT"');
});
});