This commit is contained in:
parent
26375a13b1
commit
2ea8c6d791
8 changed files with 15 additions and 43 deletions
2
.vscode/settings.json
vendored
2
.vscode/settings.json
vendored
|
@ -16,8 +16,6 @@
|
||||||
"**/.env*": true,
|
"**/.env*": true,
|
||||||
"**/.next": true,
|
"**/.next": true,
|
||||||
"**/.pnpm-store": true,
|
"**/.pnpm-store": true,
|
||||||
"**/.vscode": true,
|
|
||||||
"**/*.config*": true,
|
|
||||||
"**/biome.jsonc": true,
|
"**/biome.jsonc": true,
|
||||||
"**/next-env.d.ts": true,
|
"**/next-env.d.ts": true,
|
||||||
"**/node_modules": true,
|
"**/node_modules": true,
|
||||||
|
|
|
@ -19,7 +19,7 @@ export async function GET() {
|
||||||
duration: number;
|
duration: number;
|
||||||
success?: boolean;
|
success?: boolean;
|
||||||
pending: boolean;
|
pending: boolean;
|
||||||
created_at: Date;
|
created_at: Date;
|
||||||
}>(`select * from test_runs;`)
|
}>(`select * from test_runs;`)
|
||||||
.then((r) => r.rows);
|
.then((r) => r.rows);
|
||||||
|
|
||||||
|
@ -31,7 +31,6 @@ export async function GET() {
|
||||||
(n, child) => n + Number(child.duration),
|
(n, child) => n + Number(child.duration),
|
||||||
0
|
0
|
||||||
);
|
);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
run_id: run.id,
|
run_id: run.id,
|
||||||
run_name: run.name,
|
run_name: run.name,
|
||||||
|
@ -45,6 +44,5 @@ export async function GET() {
|
||||||
})),
|
})),
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
return NextResponse.json(formatted);
|
return NextResponse.json(formatted);
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,44 +4,26 @@ import pool from "@/utils/db";
|
||||||
export async function POST(request: Request) {
|
export async function POST(request: Request) {
|
||||||
let runId;
|
let runId;
|
||||||
try {
|
try {
|
||||||
let {
|
let {runName, testId, testName, path,duration, success, runId: passedRunId} = await request.json();
|
||||||
runName,
|
|
||||||
testId,
|
|
||||||
testName,
|
|
||||||
path,
|
|
||||||
duration,
|
|
||||||
success,
|
|
||||||
runId: passedRunId,
|
|
||||||
} = await request.json();
|
|
||||||
|
|
||||||
if (!passedRunId) {
|
if (!passedRunId) {
|
||||||
const res = await pool
|
const res = await pool
|
||||||
.query(
|
.query(
|
||||||
`WITH new_run AS (
|
`WITH new_run AS ( INSERT INTO runs (name) VALUES ($1) RETURNING id)
|
||||||
INSERT INTO runs (name)
|
SELECT id FROM new_run;`,
|
||||||
VALUES ($1)
|
|
||||||
RETURNING id
|
|
||||||
)
|
|
||||||
SELECT id FROM new_run;`,
|
|
||||||
[runName],
|
[runName],
|
||||||
)
|
)
|
||||||
.then((r) => r.rows[0].id);
|
.then((r) => r.rows[0].id);
|
||||||
|
|
||||||
return NextResponse.json({ runId: res });
|
return NextResponse.json({ runId: res });
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!testId) {
|
if (!testId) {
|
||||||
const res = await pool.query(
|
const res = await pool.query(`INSERT INTO test_runs (run_id, test_name, path)
|
||||||
`INSERT INTO test_runs (run_id, test_name, path)
|
|
||||||
VALUES ($1, $2, $3) returning id`,
|
VALUES ($1, $2, $3) returning id`,
|
||||||
[passedRunId, testName, path],
|
[passedRunId, testName, path],
|
||||||
);
|
);
|
||||||
|
|
||||||
return NextResponse.json({
|
return NextResponse.json({
|
||||||
testId: res.rows[0].id,
|
testId: res.rows[0].id,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if (testId) {
|
if (testId) {
|
||||||
if (duration) {
|
if (duration) {
|
||||||
await pool.query(
|
await pool.query(
|
||||||
|
@ -55,13 +37,8 @@ export async function POST(request: Request) {
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error("Error creating run:", error);
|
console.error("Error creating run:", error);
|
||||||
return NextResponse.json(
|
return NextResponse.json(
|
||||||
{
|
// @ts-ignore
|
||||||
error: "Failed to create run",
|
{error: "Failed to create run", message: error.message, detail: error.detail},
|
||||||
// @ts-ignore
|
|
||||||
message: error.message,
|
|
||||||
// @ts-ignore
|
|
||||||
detail: error.detail,
|
|
||||||
},
|
|
||||||
{ status: 500 },
|
{ status: 500 },
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,10 +11,6 @@ export const handleExportCSV = (dateGroup: any) => {
|
||||||
"Success",
|
"Success",
|
||||||
"Duration (s)"
|
"Duration (s)"
|
||||||
];
|
];
|
||||||
|
|
||||||
console.log(dateGroup);
|
|
||||||
console.log(toCSV(headers, dateGroup));
|
|
||||||
|
|
||||||
// Create and trigger download
|
// Create and trigger download
|
||||||
const blob = new Blob([...toCSV(headers, dateGroup)], {
|
const blob = new Blob([...toCSV(headers, dateGroup)], {
|
||||||
type: "text/csv;charset=utf-8;",
|
type: "text/csv;charset=utf-8;",
|
||||||
|
@ -32,3 +28,4 @@ export const handleExportCSV = (dateGroup: any) => {
|
||||||
link.click();
|
link.click();
|
||||||
document.body.removeChild(link);
|
document.body.removeChild(link);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -17,3 +17,5 @@ export default function toCSV(
|
||||||
|
|
||||||
return [headers.join(","), ...a.map((row) => row.join(","))].join("\n");
|
return [headers.join(","), ...a.map((row) => row.join(","))].join("\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
const { defineConfig } = require("cypress");
|
const { defineConfig } = require("cypress");
|
||||||
const apiRequestPlugin = require("./src/index");
|
const setupAnalyticsPlugin = require("./src/index");
|
||||||
|
|
||||||
module.exports = defineConfig({
|
module.exports = defineConfig({
|
||||||
historyTrackerURL: "http://localhost:3001",
|
historyTrackerURL: "http://localhost:3001",
|
||||||
e2e: {
|
e2e: {
|
||||||
setupNodeEvents(on, config) {
|
setupNodeEvents(on, config) {
|
||||||
// Set up the API request plugin
|
// Set up the analytics plugin
|
||||||
apiRequestPlugin(on, config);
|
setupAnalyticsPlugin(on, config);
|
||||||
return config;
|
return config;
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 82 KiB After Width: | Height: | Size: 190 KiB |
|
@ -55,7 +55,7 @@ const apiRequests = {
|
||||||
// Track if event handlers have been registered to prevent duplicate registrations
|
// Track if event handlers have been registered to prevent duplicate registrations
|
||||||
let eventHandlersRegistered = false;
|
let eventHandlersRegistered = false;
|
||||||
|
|
||||||
function setupApiRequestPlugin(on, config) {
|
function setupAnalyticsPlugin(on, config) {
|
||||||
// If event handlers are already registered, don't register them again
|
// If event handlers are already registered, don't register them again
|
||||||
if (eventHandlersRegistered) {
|
if (eventHandlersRegistered) {
|
||||||
console.log("API plugin event handlers already registered, skipping...");
|
console.log("API plugin event handlers already registered, skipping...");
|
||||||
|
@ -142,4 +142,4 @@ function setupApiRequestPlugin(on, config) {
|
||||||
console.log("API plugin event handlers registered successfully");
|
console.log("API plugin event handlers registered successfully");
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = setupApiRequestPlugin;
|
module.exports = setupAnalyticsPlugin;
|
||||||
|
|
Loading…
Add table
Reference in a new issue