Spaces:
Running
Running
import { dirname, join } from "node:path"; | |
import { fileURLToPath } from "node:url"; | |
// Test uploading a file in an import box. | |
import { expect, test } from "@playwright/test"; | |
import { Splash, Workspace } from "./lynxkite"; | |
let workspace: Workspace; | |
test.beforeEach(async ({ browser }) => { | |
workspace = await Workspace.empty( | |
await browser.newPage(), | |
"import_spec_test", | |
); | |
}); | |
test.afterEach(async () => { | |
await workspace.close(); | |
const splash = await new Splash(workspace.page); | |
splash.page.on("dialog", async (dialog) => { | |
await dialog.accept(); | |
}); | |
await splash.deleteEntry("import_spec_test"); | |
}); | |
async function validateImport( | |
workspace: Workspace, | |
fileName: string, | |
fileFormat: string, | |
) { | |
const __filename = fileURLToPath(import.meta.url); | |
const __dirname = dirname(__filename); | |
const filePath = join(__dirname, "data", fileName); | |
await workspace.addBox("Import file"); | |
const importBox = workspace.getBox("Import file 1"); | |
const fileFormatSelect = await importBox | |
.locator("label.param", { hasText: "file format" }) | |
.locator("select"); | |
await fileFormatSelect.selectOption(fileFormat); | |
const filePathInput = await importBox | |
.locator("label.param", { hasText: "file path" }) | |
.locator("input"); | |
await filePathInput.click(); | |
await filePathInput.fill(filePath); | |
await filePathInput.press("Enter"); | |
const tableNameInput = await importBox | |
.locator("label.param", { hasText: "table name" }) | |
.locator("input"); | |
await tableNameInput.click(); | |
await tableNameInput.fill("table"); | |
await tableNameInput.press("Enter"); | |
await workspace.addBox("View tables"); | |
const tableBox = workspace.getBox("View tables 1"); | |
await workspace.connectBoxes("Import file 1", "View tables 1"); | |
const tableRows = tableBox.locator("table tbody tr"); | |
await expect(tableRows).toHaveCount(4); | |
} | |
test("Can import a CSV file", async () => { | |
await validateImport(workspace, "import_test.csv", "csv"); | |
}); | |
test("Can import a parquet file", async () => { | |
await validateImport(workspace, "import_test.parquet", "parquet"); | |
}); | |
test("Can import a JSON file", async () => { | |
await validateImport(workspace, "import_test.json", "json"); | |
}); | |
test("Can import an Excel file", async () => { | |
await validateImport(workspace, "import_test.xlsx", "excel"); | |
}); | |