testeranto 0.159.0 → 0.160.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/module/src/ProjectPage.js +128 -21
- package/dist/module/src/ProjectsPage.js +15 -9
- package/dist/module/src/TestPage.js +13 -1
- package/dist/module/tsconfig.module.tsbuildinfo +1 -1
- package/dist/prebuild/App.js +814 -376
- package/notify.sh +47 -0
- package/package.json +1 -1
- package/src/ProjectPage.tsx +204 -38
- package/src/ProjectsPage.tsx +23 -19
- package/src/TestPage.tsx +12 -1
- package/testeranto/App.js +814 -376
- package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.web/web/logs.txt +4 -4
- package/testeranto/reports/allTests/src/lib/classBuilder.test/classBuilder.test/node/logs.txt +1 -1
- package/dist/module/src/BuildLogsPage.js +0 -99
- package/dist/module/src/Project.js +0 -332
- package/src/BuildLogsPage.tsx +0 -108
- package/src/Project.tsx +0 -375
package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.web/web/logs.txt
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
failure 4 JSHandle@error
|
|
2
|
-
{"url":"file:///Users/adam/Code/testeranto/testeranto/bundles/web/allTests/src/lib/baseBuilder.test/baseBuilder.test.web.mjs?cacheBust=
|
|
3
|
-
[{"url":"file:///Users/adam/Code/testeranto/testeranto/bundles/web/allTests/src/lib/baseBuilder.test/baseBuilder.test.web.mjs?cacheBust=
|
|
2
|
+
{"url":"file:///Users/adam/Code/testeranto/testeranto/bundles/web/allTests/src/lib/baseBuilder.test/baseBuilder.test.web.mjs?cacheBust=1753305302764","lineNumber":376,"columnNumber":14}
|
|
3
|
+
[{"url":"file:///Users/adam/Code/testeranto/testeranto/bundles/web/allTests/src/lib/baseBuilder.test/baseBuilder.test.web.mjs?cacheBust=1753305302764","lineNumber":376,"columnNumber":14}]
|
|
4
4
|
Given error 1: JSHandle@error
|
|
5
|
-
{"url":"file:///Users/adam/Code/testeranto/testeranto/bundles/web/allTests/src/lib/baseBuilder.test/baseBuilder.test.web.mjs?cacheBust=
|
|
6
|
-
[{"url":"file:///Users/adam/Code/testeranto/testeranto/bundles/web/allTests/src/lib/baseBuilder.test/baseBuilder.test.web.mjs?cacheBust=
|
|
5
|
+
{"url":"file:///Users/adam/Code/testeranto/testeranto/bundles/web/allTests/src/lib/baseBuilder.test/baseBuilder.test.web.mjs?cacheBust=1753305302764","lineNumber":698,"columnNumber":16}
|
|
6
|
+
[{"url":"file:///Users/adam/Code/testeranto/testeranto/bundles/web/allTests/src/lib/baseBuilder.test/baseBuilder.test.web.mjs?cacheBust=1753305302764","lineNumber":698,"columnNumber":16}]
|
|
7
7
|
fail JSHandle@error
|
|
8
8
|
{"url":"pptr:evaluate;file%3A%2F%2F%2FUsers%2Fadam%2FCode%2Ftesteranto%2Fsrc%2FPM%2Fmain.ts%3A18%3A1394","lineNumber":7,"columnNumber":16}
|
|
9
9
|
[{"url":"pptr:evaluate;file%3A%2F%2F%2FUsers%2Fadam%2FCode%2Ftesteranto%2Fsrc%2FPM%2Fmain.ts%3A18%3A1394","lineNumber":7,"columnNumber":16}]
|
package/testeranto/reports/allTests/src/lib/classBuilder.test/classBuilder.test/node/logs.txt
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
stderr > Starting inspector on 127.0.0.1:9229 failed: address already in use
|
|
2
|
-
stdout > receiveTestResourceConfig {"name":"src/lib/classBuilder.test/classBuilder.test.ts","ports":[],"fs":"testeranto/reports/allTests/src/lib/classBuilder.test/classBuilder.test/node","browserWSEndpoint":"ws://127.0.0.1:3234/devtools/browser/
|
|
2
|
+
stdout > receiveTestResourceConfig {"name":"src/lib/classBuilder.test/classBuilder.test.ts","ports":[],"fs":"testeranto/reports/allTests/src/lib/classBuilder.test/classBuilder.test/node","browserWSEndpoint":"ws://127.0.0.1:3234/devtools/browser/ea71a8df-ab43-425d-b7af-5e8d7a8928d1"}
|
|
3
3
|
stderr > Given error 1: ReferenceError: TestClassBuilder is not defined
|
|
4
4
|
at Then.thenCB (file:///Users/adam/Code/testeranto/testeranto/bundles/node/allTests/src/lib/classBuilder.test/classBuilder.test.mjs:572:32)
|
|
5
5
|
at file:///Users/adam/Code/testeranto/testeranto/bundles/node/allTests/chunk-4NYHHJ7H.mjs:496:29
|
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
// import React, { useEffect, useState } from 'react';
|
|
3
|
-
// import { useParams } from 'react-router-dom';
|
|
4
|
-
// import { Alert, Badge } from 'react-bootstrap';
|
|
5
|
-
// type BuildLogs = {
|
|
6
|
-
// errors: string[];
|
|
7
|
-
// warnings: string[];
|
|
8
|
-
// inputs: Record<string, any>;
|
|
9
|
-
// outputs: Record<string, any>;
|
|
10
|
-
// };
|
|
11
|
-
// export const BuildLogsPage = () => {
|
|
12
|
-
// const { projectName, runtime } = useParams<{ projectName: string; runtime: string }>();
|
|
13
|
-
// const [logs, setLogs] = useState<BuildLogs | null>(null);
|
|
14
|
-
// const [loading, setLoading] = useState(true);
|
|
15
|
-
// const [error, setError] = useState<string | null>(null);
|
|
16
|
-
// useEffect(() => {
|
|
17
|
-
// const fetchBuildLogs = async () => {
|
|
18
|
-
// try {
|
|
19
|
-
// // Mock data - replace with actual API call
|
|
20
|
-
// const mockLogs: BuildLogs = {
|
|
21
|
-
// errors: [
|
|
22
|
-
// "Error: Could not resolve './someModule'",
|
|
23
|
-
// "TypeError: Cannot read property 'map' of undefined"
|
|
24
|
-
// ],
|
|
25
|
-
// warnings: [
|
|
26
|
-
// "Warning: Circular dependency detected",
|
|
27
|
-
// "Warning: Unused import"
|
|
28
|
-
// ],
|
|
29
|
-
// inputs: {
|
|
30
|
-
// "src/lib/index.ts": {
|
|
31
|
-
// bytes: 3565,
|
|
32
|
-
// imports: []
|
|
33
|
-
// }
|
|
34
|
-
// },
|
|
35
|
-
// outputs: {
|
|
36
|
-
// "dist/bundle.js": {
|
|
37
|
-
// bytes: 12345
|
|
38
|
-
// }
|
|
39
|
-
// }
|
|
40
|
-
// };
|
|
41
|
-
// setLogs(mockLogs);
|
|
42
|
-
// } catch (err) {
|
|
43
|
-
// setError(err instanceof Error ? err.message : 'Unknown error');
|
|
44
|
-
// } finally {
|
|
45
|
-
// setLoading(false);
|
|
46
|
-
// }
|
|
47
|
-
// };
|
|
48
|
-
// fetchBuildLogs();
|
|
49
|
-
// }, [projectName, runtime]);
|
|
50
|
-
// if (loading) return <div>Loading build logs...</div>;
|
|
51
|
-
// if (error) return <Alert variant="danger">Error: {error}</Alert>;
|
|
52
|
-
// return (
|
|
53
|
-
// <div>
|
|
54
|
-
// <h1>
|
|
55
|
-
// Build Logs
|
|
56
|
-
// <Badge bg="info" className="ms-2">{runtime}</Badge>
|
|
57
|
-
// <Badge bg="secondary" className="ms-2">{projectName}</Badge>
|
|
58
|
-
// </h1>
|
|
59
|
-
// {logs ? (
|
|
60
|
-
// <div>
|
|
61
|
-
// <h2 className="mt-4">Errors</h2>
|
|
62
|
-
// {logs.errors.length > 0 ? (
|
|
63
|
-
// <div className="mb-4">
|
|
64
|
-
// {logs.errors.map((err, i) => (
|
|
65
|
-
// <Alert key={i} variant="danger" className="mb-2">
|
|
66
|
-
// {err}
|
|
67
|
-
// </Alert>
|
|
68
|
-
// ))}
|
|
69
|
-
// </div>
|
|
70
|
-
// ) : (
|
|
71
|
-
// <Alert variant="success">No errors found</Alert>
|
|
72
|
-
// )}
|
|
73
|
-
// <h2 className="mt-4">Warnings</h2>
|
|
74
|
-
// {logs.warnings.length > 0 ? (
|
|
75
|
-
// <div className="mb-4">
|
|
76
|
-
// {logs.warnings.map((warn, i) => (
|
|
77
|
-
// <Alert key={i} variant="warning" className="mb-2">
|
|
78
|
-
// {warn}
|
|
79
|
-
// </Alert>
|
|
80
|
-
// ))}
|
|
81
|
-
// </div>
|
|
82
|
-
// ) : (
|
|
83
|
-
// <Alert variant="success">No warnings found</Alert>
|
|
84
|
-
// )}
|
|
85
|
-
// <h2 className="mt-4">Input Files</h2>
|
|
86
|
-
// <pre className="bg-light p-3">
|
|
87
|
-
// {JSON.stringify(logs.inputs, null, 2)}
|
|
88
|
-
// </pre>
|
|
89
|
-
// <h2 className="mt-4">Output Files</h2>
|
|
90
|
-
// <pre className="bg-light p-3">
|
|
91
|
-
// {JSON.stringify(logs.outputs, null, 2)}
|
|
92
|
-
// </pre>
|
|
93
|
-
// </div>
|
|
94
|
-
// ) : (
|
|
95
|
-
// <Alert variant="warning">No build logs found</Alert>
|
|
96
|
-
// )}
|
|
97
|
-
// </div>
|
|
98
|
-
// );
|
|
99
|
-
// };
|
|
@@ -1,332 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
// /* eslint-disable @typescript-eslint/no-unused-vars */
|
|
3
|
-
// import ReactDom from "react-dom/client";
|
|
4
|
-
// import React, { useEffect, useState } from "react";
|
|
5
|
-
// import { Col, Nav, Row, Tab, Table } from "react-bootstrap";
|
|
6
|
-
// import { Footer } from "./Footer";
|
|
7
|
-
// import { IBuiltConfig } from "./lib";
|
|
8
|
-
// import { ISummary } from "./Types";
|
|
9
|
-
// import { SettingsButton } from "./SettingsButton";
|
|
10
|
-
// import SunriseAnimation from "./components/SunriseAnimation";
|
|
11
|
-
// import "./Project.scss"
|
|
12
|
-
// type ISummaries = [string, IBuiltConfig, ISummary][];
|
|
13
|
-
// const BigBoard = () => {
|
|
14
|
-
// const bigConfigElement = document.getElementById("bigConfig");
|
|
15
|
-
// if (!bigConfigElement) throw new Error("bigConfig element not found");
|
|
16
|
-
// const projects = JSON.parse(bigConfigElement.innerHTML) as string[];
|
|
17
|
-
// const [summary, setSummary] = useState<ISummaries>();
|
|
18
|
-
// const [nodeLogs, setNodeLogs] = useState<Record<string, string>>({});
|
|
19
|
-
// const [webLogs, setWebLogs] = useState<Record<string, string>>({});
|
|
20
|
-
// const [pureLogs, setPureLogs] = useState<Record<string, string>>({});
|
|
21
|
-
// const [activeTab, setActiveTab] = useState<string>(() => {
|
|
22
|
-
// const hash = window.location.hash.replace('#', '');
|
|
23
|
-
// return hash || "node";
|
|
24
|
-
// });
|
|
25
|
-
// const fetchLogs = async (project: string) => {
|
|
26
|
-
// try {
|
|
27
|
-
// const [nodeRes, webRes, pureRes] = await Promise.all([
|
|
28
|
-
// fetch(`./bundles/node/${project}/metafile.json`),
|
|
29
|
-
// fetch(`./bundles/web/${project}/metafile.json`),
|
|
30
|
-
// fetch(`./bundles/pure/${project}/metafile.json`),
|
|
31
|
-
// ]);
|
|
32
|
-
// setNodeLogs({ [project]: await nodeRes.json() });
|
|
33
|
-
// setWebLogs({ [project]: await webRes.json() });
|
|
34
|
-
// setPureLogs({ [project]: await pureRes.json() });
|
|
35
|
-
// } catch (error) {
|
|
36
|
-
// console.error("Error fetching logs:", error);
|
|
37
|
-
// setNodeLogs({ [project]: "ERROR" });
|
|
38
|
-
// setNodeLogs({ [project]: "ERROR" });
|
|
39
|
-
// setNodeLogs({ [project]: "ERROR" });
|
|
40
|
-
// }
|
|
41
|
-
// };
|
|
42
|
-
// useEffect(() => {
|
|
43
|
-
// (async () => {
|
|
44
|
-
// const x: Promise<[string, IBuiltConfig, ISummary]>[] = projects.map(
|
|
45
|
-
// async (p) => {
|
|
46
|
-
// fetchLogs(p);
|
|
47
|
-
// return [
|
|
48
|
-
// p,
|
|
49
|
-
// (await (
|
|
50
|
-
// await fetch(`./reports/config.json`)
|
|
51
|
-
// ).json()) as IBuiltConfig,
|
|
52
|
-
// (await (
|
|
53
|
-
// await fetch(`./reports/${p}/summary.json`)
|
|
54
|
-
// ).json()) as ISummary,
|
|
55
|
-
// ] as [string, IBuiltConfig, ISummary];
|
|
56
|
-
// }
|
|
57
|
-
// );
|
|
58
|
-
// Promise.all(x).then((v) => {
|
|
59
|
-
// setSummary(v);
|
|
60
|
-
// });
|
|
61
|
-
// })();
|
|
62
|
-
// }, []);
|
|
63
|
-
// if (!summary || summary?.length === 0) {
|
|
64
|
-
// return <div>loading...</div>;
|
|
65
|
-
// }
|
|
66
|
-
// return (
|
|
67
|
-
// <div>
|
|
68
|
-
// <SunriseAnimation active={false} />
|
|
69
|
-
// <div className="container-fluid p-4" style={{ backgroundColor: 'transparent', position: 'relative', zIndex: 10 }}>
|
|
70
|
-
// {/* Sky and sun elements */}
|
|
71
|
-
// {/* <div id="sky"></div>
|
|
72
|
-
// <div id="sun"></div>
|
|
73
|
-
// <div id="sunDay"></div>
|
|
74
|
-
// <div id="sunSet"></div>
|
|
75
|
-
// <div id="horizon"></div>
|
|
76
|
-
// <div id="water"></div>
|
|
77
|
-
// <div id="waterReflectionContainer">
|
|
78
|
-
// <div id="waterReflectionMiddle"></div>
|
|
79
|
-
// </div> */}
|
|
80
|
-
// <Tab.Container activeKey={activeTab} defaultActiveKey="node">
|
|
81
|
-
// <nav className="navbar navbar-expand-lg navbar-light bg-light mb-3 rounded">
|
|
82
|
-
// <div className="container-fluid">
|
|
83
|
-
// <span className="navbar-brand text-muted">Project: testeranto</span>
|
|
84
|
-
// <Nav variant="pills" className="me-auto" activeKey={activeTab} onSelect={(k) => {
|
|
85
|
-
// setActiveTab(k || "node");
|
|
86
|
-
// window.location.hash = k || "node";
|
|
87
|
-
// }}>
|
|
88
|
-
// <Nav.Item>
|
|
89
|
-
// <Nav.Link eventKey="projects">Test Results</Nav.Link>
|
|
90
|
-
// </Nav.Item>
|
|
91
|
-
// <Nav.Item>
|
|
92
|
-
// <Nav.Link
|
|
93
|
-
// eventKey="node"
|
|
94
|
-
// className={Object.values(nodeLogs).every(log => !log.errors || log.errors.length === 0)
|
|
95
|
-
// ? "text-success"
|
|
96
|
-
// : "text-danger"}
|
|
97
|
-
// >
|
|
98
|
-
// Node Build {Object.values(nodeLogs).every(log => !log.errors || log.errors.length === 0) ? "✅" : "❌"}
|
|
99
|
-
// </Nav.Link>
|
|
100
|
-
// </Nav.Item>
|
|
101
|
-
// <Nav.Item>
|
|
102
|
-
// <Nav.Link
|
|
103
|
-
// eventKey="web"
|
|
104
|
-
// className={Object.values(webLogs).every(log => !log.errors || log.errors.length === 0)
|
|
105
|
-
// ? "text-success"
|
|
106
|
-
// : "text-danger"}
|
|
107
|
-
// >
|
|
108
|
-
// Web Build {Object.values(webLogs).every(log => !log.errors || log.errors.length === 0) ? "✅" : "❌"}
|
|
109
|
-
// </Nav.Link>
|
|
110
|
-
// </Nav.Item>
|
|
111
|
-
// <Nav.Item>
|
|
112
|
-
// <Nav.Link
|
|
113
|
-
// eventKey="pure"
|
|
114
|
-
// className={Object.values(pureLogs).every(log => !log.errors || log.errors.length === 0)
|
|
115
|
-
// ? "text-success"
|
|
116
|
-
// : "text-danger"}
|
|
117
|
-
// >
|
|
118
|
-
// Pure Build {Object.values(pureLogs).every(log => !log.errors || log.errors.length === 0) ? "✅" : "❌"}
|
|
119
|
-
// </Nav.Link>
|
|
120
|
-
// </Nav.Item>
|
|
121
|
-
// </Nav>
|
|
122
|
-
// </div>
|
|
123
|
-
// </nav>
|
|
124
|
-
// <Row>
|
|
125
|
-
// <Tab.Content>
|
|
126
|
-
// <Tab.Pane eventKey="node">
|
|
127
|
-
// {Object.keys(nodeLogs).length > 0 && (
|
|
128
|
-
// <div className={`alert ${Object.values(nodeLogs).every(log => !log.errors || log.errors.length === 0)
|
|
129
|
-
// ? 'alert-success'
|
|
130
|
-
// : 'alert-danger'} d-flex justify-content-between align-items-center`}>
|
|
131
|
-
// <span>
|
|
132
|
-
// {Object.values(nodeLogs).every(log => !log.errors || log.errors.length === 0)
|
|
133
|
-
// ? '✅ All Node builds passed successfully'
|
|
134
|
-
// : '❌ Some Node builds failed'}
|
|
135
|
-
// </span>
|
|
136
|
-
// {!Object.values(nodeLogs).every(log => !log.errors || log.errors.length === 0) && (
|
|
137
|
-
// <button
|
|
138
|
-
// onClick={() => alert('AI debugger coming soon!')}
|
|
139
|
-
// className="btn btn-sm btn-primary"
|
|
140
|
-
// title="Get AI help debugging these build failures"
|
|
141
|
-
// >
|
|
142
|
-
// 🤖🪄✨
|
|
143
|
-
// </button>
|
|
144
|
-
// )}
|
|
145
|
-
// </div>
|
|
146
|
-
// )}
|
|
147
|
-
// <pre >
|
|
148
|
-
// {JSON.stringify(nodeLogs, null, 2)}
|
|
149
|
-
// </pre>
|
|
150
|
-
// </Tab.Pane>
|
|
151
|
-
// <Tab.Pane eventKey="web">
|
|
152
|
-
// {Object.keys(webLogs).length > 0 && (
|
|
153
|
-
// <div className={`alert ${Object.values(webLogs).every(log => !log.errors || log.errors.length === 0)
|
|
154
|
-
// ? 'alert-success'
|
|
155
|
-
// : 'alert-danger'} d-flex justify-content-between align-items-center`}>
|
|
156
|
-
// <span>
|
|
157
|
-
// {Object.values(webLogs).every(log => !log.errors || log.errors.length === 0)
|
|
158
|
-
// ? '✅ All Web builds passed successfully'
|
|
159
|
-
// : '❌ Some Web builds failed'}
|
|
160
|
-
// </span>
|
|
161
|
-
// {!Object.values(webLogs).every(log => !log.errors || log.errors.length === 0) && (
|
|
162
|
-
// <button
|
|
163
|
-
// onClick={() => alert('AI debugger coming soon!')}
|
|
164
|
-
// className="btn btn-sm btn-primary"
|
|
165
|
-
// title="Get AI help debugging these build failures"
|
|
166
|
-
// >
|
|
167
|
-
// 🤖🪄✨
|
|
168
|
-
// </button>
|
|
169
|
-
// )}
|
|
170
|
-
// </div>
|
|
171
|
-
// )}
|
|
172
|
-
// <pre >
|
|
173
|
-
// {JSON.stringify(webLogs, null, 2)}
|
|
174
|
-
// </pre>
|
|
175
|
-
// </Tab.Pane>
|
|
176
|
-
// <Tab.Pane eventKey="pure">
|
|
177
|
-
// {Object.keys(pureLogs).length > 0 && (
|
|
178
|
-
// <div className={`alert ${Object.values(pureLogs).every(log => !log.errors || log.errors.length === 0)
|
|
179
|
-
// ? 'alert-success'
|
|
180
|
-
// : 'alert-danger'} d-flex justify-content-between align-items-center`}>
|
|
181
|
-
// <span>
|
|
182
|
-
// {Object.values(pureLogs).every(log => !log.errors || log.errors.length === 0)
|
|
183
|
-
// ? '✅ All Pure builds passed successfully'
|
|
184
|
-
// : '❌ Some Pure builds failed'}
|
|
185
|
-
// </span>
|
|
186
|
-
// {!Object.values(pureLogs).every(log => !log.errors || log.errors.length === 0) && (
|
|
187
|
-
// <button
|
|
188
|
-
// onClick={() => alert('AI debugger coming soon!')}
|
|
189
|
-
// className="btn btn-sm btn-primary"
|
|
190
|
-
// title="Get AI help debugging these build failures"
|
|
191
|
-
// >
|
|
192
|
-
// 🤖🪄✨
|
|
193
|
-
// </button>
|
|
194
|
-
// )}
|
|
195
|
-
// </div>
|
|
196
|
-
// )}
|
|
197
|
-
// <pre >
|
|
198
|
-
// {JSON.stringify(pureLogs, null, 2)}
|
|
199
|
-
// </pre>
|
|
200
|
-
// </Tab.Pane>
|
|
201
|
-
// <Tab.Pane eventKey="projects">
|
|
202
|
-
// <Tab.Container defaultActiveKey={projects[0]}>
|
|
203
|
-
// <Row>
|
|
204
|
-
// <Col sm={3}>
|
|
205
|
-
// <Nav variant="pills" className="flex-column">
|
|
206
|
-
// {projects.map((project) => (
|
|
207
|
-
// <Nav.Item key={project}>
|
|
208
|
-
// <Nav.Link eventKey={project}>{project}</Nav.Link>
|
|
209
|
-
// </Nav.Item>
|
|
210
|
-
// ))}
|
|
211
|
-
// </Nav>
|
|
212
|
-
// </Col>
|
|
213
|
-
// <Col sm={9}>
|
|
214
|
-
// <Tab.Content>
|
|
215
|
-
// {projects.map((project) => (
|
|
216
|
-
// <Tab.Pane key={project} eventKey={project}>
|
|
217
|
-
// <Table>
|
|
218
|
-
// <Table>
|
|
219
|
-
// <thead>
|
|
220
|
-
// <tr>
|
|
221
|
-
// <th>project</th>
|
|
222
|
-
// <th>platform</th>
|
|
223
|
-
// <th>BDD errors</th>
|
|
224
|
-
// <th>Lint errors</th>
|
|
225
|
-
// <th>Type errors</th>
|
|
226
|
-
// </tr>
|
|
227
|
-
// </thead>
|
|
228
|
-
// <tbody>
|
|
229
|
-
// {...summary.map((s) => {
|
|
230
|
-
// return (
|
|
231
|
-
// <>
|
|
232
|
-
// <tr>
|
|
233
|
-
// <th>{s[0]}</th>
|
|
234
|
-
// </tr>
|
|
235
|
-
// {...s[1].tests.map((t) => {
|
|
236
|
-
// const x = `${s[0]}/${t[0]
|
|
237
|
-
// .split(".")
|
|
238
|
-
// .slice(0, -1)
|
|
239
|
-
// .join(".")}/${t[1]}`;
|
|
240
|
-
// const y = s[2][t[0]];
|
|
241
|
-
// if (!y) return <pre>ERROR</pre>
|
|
242
|
-
// return (
|
|
243
|
-
// <tr>
|
|
244
|
-
// <td>{t[0]}</td>
|
|
245
|
-
// <td>
|
|
246
|
-
// <button
|
|
247
|
-
// className={`btn btn-sm ${(t[1] === "node" && nodeLogs[s[0]]?.errors?.length === 0) ||
|
|
248
|
-
// (t[1] === "web" && webLogs[s[0]]?.errors?.length === 0) ||
|
|
249
|
-
// (t[1] === "pure" && pureLogs[s[0]]?.errors?.length === 0)
|
|
250
|
-
// ? "btn-outline-success"
|
|
251
|
-
// : "btn-outline-danger"
|
|
252
|
-
// }`}
|
|
253
|
-
// onClick={() => {
|
|
254
|
-
// const tabKey = t[1] === "node" ? "node" : t[1] === "web" ? "web" : "pure";
|
|
255
|
-
// setActiveTab(tabKey);
|
|
256
|
-
// }}
|
|
257
|
-
// title={
|
|
258
|
-
// (t[1] === "node" && nodeLogs[s[0]]?.errors?.length === 0) ||
|
|
259
|
-
// (t[1] === "web" && webLogs[s[0]]?.errors?.length === 0) ||
|
|
260
|
-
// (t[1] === "pure" && pureLogs[s[0]]?.errors?.length === 0)
|
|
261
|
-
// ? "Build succeeded"
|
|
262
|
-
// : "Build failed"
|
|
263
|
-
// }
|
|
264
|
-
// >
|
|
265
|
-
// {t[1]}
|
|
266
|
-
// {(t[1] === "node" && nodeLogs[s[0]]?.errors?.length === 0) ||
|
|
267
|
-
// (t[1] === "web" && webLogs[s[0]]?.errors?.length === 0) ||
|
|
268
|
-
// (t[1] === "pure" && pureLogs[s[0]]?.errors?.length === 0)
|
|
269
|
-
// ? " ✅"
|
|
270
|
-
// : " ❌"}
|
|
271
|
-
// </button>
|
|
272
|
-
// </td>
|
|
273
|
-
// <td>
|
|
274
|
-
// <a
|
|
275
|
-
// href={`./reports/${x}/index.html`}
|
|
276
|
-
// >
|
|
277
|
-
// {
|
|
278
|
-
// (y.runTimeErrors < 0) && "‼️ Tests did not complete"
|
|
279
|
-
// }
|
|
280
|
-
// {
|
|
281
|
-
// y.runTimeErrors === 0 && "✅ All tests passed"
|
|
282
|
-
// }
|
|
283
|
-
// {
|
|
284
|
-
// y.runTimeErrors > 0 && `⚠️ ${y.runTimeErrors} failures`
|
|
285
|
-
// }
|
|
286
|
-
// </a>
|
|
287
|
-
// </td>
|
|
288
|
-
// <td>
|
|
289
|
-
// <a
|
|
290
|
-
// href={`./reports/${x}/lint_errors.txt`}
|
|
291
|
-
// >
|
|
292
|
-
// {y.staticErrors}
|
|
293
|
-
// </a>
|
|
294
|
-
// </td>
|
|
295
|
-
// <td>
|
|
296
|
-
// <a
|
|
297
|
-
// href={`./reports/${x}/type_errors.txt`}
|
|
298
|
-
// >
|
|
299
|
-
// {y.typeErrors}
|
|
300
|
-
// </a>
|
|
301
|
-
// </td>
|
|
302
|
-
// </tr>
|
|
303
|
-
// );
|
|
304
|
-
// })}
|
|
305
|
-
// </>
|
|
306
|
-
// );
|
|
307
|
-
// })}
|
|
308
|
-
// </tbody>
|
|
309
|
-
// </Table>
|
|
310
|
-
// </Table>
|
|
311
|
-
// </Tab.Pane>
|
|
312
|
-
// ))}
|
|
313
|
-
// </Tab.Content>
|
|
314
|
-
// </Col>
|
|
315
|
-
// </Row>
|
|
316
|
-
// </Tab.Container>
|
|
317
|
-
// </Tab.Pane>
|
|
318
|
-
// </Tab.Content>
|
|
319
|
-
// </Row>
|
|
320
|
-
// </Tab.Container>
|
|
321
|
-
// {/* disabled for now */}
|
|
322
|
-
// {/* <SettingsButton className="gear-icon" /> */}
|
|
323
|
-
// <Footer />
|
|
324
|
-
// </div></div>
|
|
325
|
-
// );
|
|
326
|
-
// };
|
|
327
|
-
// document.addEventListener("DOMContentLoaded", function () {
|
|
328
|
-
// const elem = document.getElementById("root");
|
|
329
|
-
// if (elem) {
|
|
330
|
-
// ReactDom.createRoot(elem).render(React.createElement(BigBoard, {}));
|
|
331
|
-
// }
|
|
332
|
-
// });
|
package/src/BuildLogsPage.tsx
DELETED
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
// import React, { useEffect, useState } from 'react';
|
|
2
|
-
// import { useParams } from 'react-router-dom';
|
|
3
|
-
// import { Alert, Badge } from 'react-bootstrap';
|
|
4
|
-
|
|
5
|
-
// type BuildLogs = {
|
|
6
|
-
// errors: string[];
|
|
7
|
-
// warnings: string[];
|
|
8
|
-
// inputs: Record<string, any>;
|
|
9
|
-
// outputs: Record<string, any>;
|
|
10
|
-
// };
|
|
11
|
-
|
|
12
|
-
// export const BuildLogsPage = () => {
|
|
13
|
-
// const { projectName, runtime } = useParams<{ projectName: string; runtime: string }>();
|
|
14
|
-
// const [logs, setLogs] = useState<BuildLogs | null>(null);
|
|
15
|
-
// const [loading, setLoading] = useState(true);
|
|
16
|
-
// const [error, setError] = useState<string | null>(null);
|
|
17
|
-
|
|
18
|
-
// useEffect(() => {
|
|
19
|
-
// const fetchBuildLogs = async () => {
|
|
20
|
-
// try {
|
|
21
|
-
// // Mock data - replace with actual API call
|
|
22
|
-
// const mockLogs: BuildLogs = {
|
|
23
|
-
// errors: [
|
|
24
|
-
// "Error: Could not resolve './someModule'",
|
|
25
|
-
// "TypeError: Cannot read property 'map' of undefined"
|
|
26
|
-
// ],
|
|
27
|
-
// warnings: [
|
|
28
|
-
// "Warning: Circular dependency detected",
|
|
29
|
-
// "Warning: Unused import"
|
|
30
|
-
// ],
|
|
31
|
-
// inputs: {
|
|
32
|
-
// "src/lib/index.ts": {
|
|
33
|
-
// bytes: 3565,
|
|
34
|
-
// imports: []
|
|
35
|
-
// }
|
|
36
|
-
// },
|
|
37
|
-
// outputs: {
|
|
38
|
-
// "dist/bundle.js": {
|
|
39
|
-
// bytes: 12345
|
|
40
|
-
// }
|
|
41
|
-
// }
|
|
42
|
-
// };
|
|
43
|
-
// setLogs(mockLogs);
|
|
44
|
-
// } catch (err) {
|
|
45
|
-
// setError(err instanceof Error ? err.message : 'Unknown error');
|
|
46
|
-
// } finally {
|
|
47
|
-
// setLoading(false);
|
|
48
|
-
// }
|
|
49
|
-
// };
|
|
50
|
-
|
|
51
|
-
// fetchBuildLogs();
|
|
52
|
-
// }, [projectName, runtime]);
|
|
53
|
-
|
|
54
|
-
// if (loading) return <div>Loading build logs...</div>;
|
|
55
|
-
// if (error) return <Alert variant="danger">Error: {error}</Alert>;
|
|
56
|
-
|
|
57
|
-
// return (
|
|
58
|
-
// <div>
|
|
59
|
-
// <h1>
|
|
60
|
-
// Build Logs
|
|
61
|
-
// <Badge bg="info" className="ms-2">{runtime}</Badge>
|
|
62
|
-
// <Badge bg="secondary" className="ms-2">{projectName}</Badge>
|
|
63
|
-
// </h1>
|
|
64
|
-
|
|
65
|
-
// {logs ? (
|
|
66
|
-
// <div>
|
|
67
|
-
// <h2 className="mt-4">Errors</h2>
|
|
68
|
-
// {logs.errors.length > 0 ? (
|
|
69
|
-
// <div className="mb-4">
|
|
70
|
-
// {logs.errors.map((err, i) => (
|
|
71
|
-
// <Alert key={i} variant="danger" className="mb-2">
|
|
72
|
-
// {err}
|
|
73
|
-
// </Alert>
|
|
74
|
-
// ))}
|
|
75
|
-
// </div>
|
|
76
|
-
// ) : (
|
|
77
|
-
// <Alert variant="success">No errors found</Alert>
|
|
78
|
-
// )}
|
|
79
|
-
|
|
80
|
-
// <h2 className="mt-4">Warnings</h2>
|
|
81
|
-
// {logs.warnings.length > 0 ? (
|
|
82
|
-
// <div className="mb-4">
|
|
83
|
-
// {logs.warnings.map((warn, i) => (
|
|
84
|
-
// <Alert key={i} variant="warning" className="mb-2">
|
|
85
|
-
// {warn}
|
|
86
|
-
// </Alert>
|
|
87
|
-
// ))}
|
|
88
|
-
// </div>
|
|
89
|
-
// ) : (
|
|
90
|
-
// <Alert variant="success">No warnings found</Alert>
|
|
91
|
-
// )}
|
|
92
|
-
|
|
93
|
-
// <h2 className="mt-4">Input Files</h2>
|
|
94
|
-
// <pre className="bg-light p-3">
|
|
95
|
-
// {JSON.stringify(logs.inputs, null, 2)}
|
|
96
|
-
// </pre>
|
|
97
|
-
|
|
98
|
-
// <h2 className="mt-4">Output Files</h2>
|
|
99
|
-
// <pre className="bg-light p-3">
|
|
100
|
-
// {JSON.stringify(logs.outputs, null, 2)}
|
|
101
|
-
// </pre>
|
|
102
|
-
// </div>
|
|
103
|
-
// ) : (
|
|
104
|
-
// <Alert variant="warning">No build logs found</Alert>
|
|
105
|
-
// )}
|
|
106
|
-
// </div>
|
|
107
|
-
// );
|
|
108
|
-
// };
|