mirror of
https://github.com/beekeeper-studio/beekeeper-studio.git
synced 2026-03-13 10:12:54 +08:00
When a test or beforeEach fails before electronApp is assigned, the afterEach would crash trying to call .close() on undefined, masking the real error. Add a null check in all 9 e2e test files. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
71 lines
2.7 KiB
TypeScript
71 lines
2.7 KiB
TypeScript
import { _electron as electron } from 'playwright';
|
|
import { test, expect, beforeEach, afterEach } from '@playwright/test';
|
|
import { QueryTab } from '../pageComponents/QueryTab';
|
|
import { QueryResultPane } from '../pageComponents/QueryResultPane';
|
|
import { userActions } from "../pageActions/index";
|
|
import { POSTGRES_CONFIG } from './config/postgresDbConfig';
|
|
|
|
const POSTGRES_QUERY = 'SELECT * FROM actor WHERE actor_id IN (1, 2);';
|
|
|
|
|
|
let electronApp;
|
|
let window;
|
|
let queryTab;
|
|
let resultPane;
|
|
let userAttemptsTo;
|
|
|
|
test.describe("Result Pane Verifications", () => {
|
|
|
|
beforeEach(async () => {
|
|
electronApp = await electron.launch({ args: ['dist/main.js'] });
|
|
window = await electronApp.firstWindow();
|
|
queryTab = new QueryTab(window);
|
|
resultPane = new QueryResultPane(window);
|
|
userAttemptsTo = userActions(window);
|
|
});
|
|
|
|
afterEach(async () => {
|
|
if (electronApp) {
|
|
await electronApp.close();
|
|
}
|
|
});
|
|
|
|
test("clicks on results columns", async () => {
|
|
|
|
await userAttemptsTo.selectNewConnection(POSTGRES_CONFIG.connectionType);
|
|
await userAttemptsTo.insertDatabaseDetails(POSTGRES_CONFIG);
|
|
await userAttemptsTo.connectWithDatabase();
|
|
|
|
await expect(queryTab.queryTabTextArea).toBeVisible();
|
|
await userAttemptsTo.writeAQuery(POSTGRES_QUERY);
|
|
await userAttemptsTo.runQuery();
|
|
await expect(resultPane.resultSecondRow).toBeVisible();
|
|
// will move this to an action
|
|
await userAttemptsTo.clickOnFirstColumnHeader();
|
|
await expect(resultPane.firstColumnHeader).toBeVisible();
|
|
});
|
|
|
|
test("reorders items by clicking", async () => {
|
|
|
|
await userAttemptsTo.selectNewConnection(POSTGRES_CONFIG.connectionType);
|
|
await userAttemptsTo.insertDatabaseDetails(POSTGRES_CONFIG);
|
|
await userAttemptsTo.connectWithDatabase();
|
|
|
|
await expect(queryTab.queryTabTextArea).toBeVisible();
|
|
await userAttemptsTo.writeAQuery(POSTGRES_QUERY);
|
|
await userAttemptsTo.runQuery();
|
|
await expect(resultPane.resultSecondRow).toBeVisible();
|
|
|
|
// clicking twice due to a bug (will be reported)
|
|
await userAttemptsTo.clickOnFirstColumnHeader();
|
|
|
|
const cellValueBeforeReordering = await resultPane.firstItemAndFirstColumn.textContent()
|
|
await expect(await resultPane.firstItemAndFirstColumn).toBeVisible();
|
|
await userAttemptsTo.clickOnFirstColumnHeader();
|
|
const cellValueAfterReordering = await resultPane.firstItemAndFirstColumn.textContent();
|
|
|
|
await expect(resultPane.resultFirstRow).toBeVisible();
|
|
await expect(cellValueBeforeReordering).not.toBe(cellValueAfterReordering);
|
|
});
|
|
});
|