76 lines
2.2 KiB
JavaScript
76 lines
2.2 KiB
JavaScript
const assert = require('assert');
|
|
const fs = require('fs');
|
|
const path = require('path');
|
|
|
|
const root = path.resolve(__dirname, '..');
|
|
const canvasHtml = fs.readFileSync(path.join(root, 'frontend', 'canvas.html'), 'utf8');
|
|
|
|
assert(
|
|
canvasHtml.includes('Build GDS'),
|
|
'Project Tree header should include a Build GDS button'
|
|
);
|
|
assert(
|
|
canvasHtml.includes('/api/build-gds'),
|
|
'Build GDS button should call the backend build-gds API'
|
|
);
|
|
assert(
|
|
canvasHtml.includes(':layout'),
|
|
'Build Layout should open an SVG preview tab named like canvas_1:layout'
|
|
);
|
|
assert(
|
|
canvasHtml.includes('svg_url'),
|
|
'Build Layout should use the backend svg_url response'
|
|
);
|
|
assert(
|
|
canvasHtml.includes('layoutPreview'),
|
|
'canvas pages should support a layoutPreview tab type'
|
|
);
|
|
assert(
|
|
canvasHtml.includes('LayoutSvgPreview'),
|
|
'layout preview tabs should use the auto-scaling SVG viewer'
|
|
);
|
|
assert(
|
|
canvasHtml.includes('layoutScale'),
|
|
'layout SVG preview should expose an editable scale value'
|
|
);
|
|
assert(
|
|
canvasHtml.includes('objectFit: \'contain\''),
|
|
'100% layout preview scale should fit the full SVG within the screen'
|
|
);
|
|
assert(
|
|
canvasHtml.includes('className="build-gds-btn"'),
|
|
'Build GDS should use a dedicated polished button class'
|
|
);
|
|
assert(
|
|
canvasHtml.includes('buildGdsBusy'),
|
|
'Build GDS should expose an in-progress state to prevent duplicate requests'
|
|
);
|
|
assert(
|
|
canvasHtml.includes('Build GDS network error'),
|
|
'Build GDS fetch failures should produce a specific network diagnostic'
|
|
);
|
|
assert(
|
|
canvasHtml.includes('className="build-layout-btn"'),
|
|
'Build Layout should use the polished primary action class'
|
|
);
|
|
assert(
|
|
canvasHtml.includes('Route Editor'),
|
|
'Selecting an edge should expose a route editor'
|
|
);
|
|
assert(
|
|
canvasHtml.includes('selectedEdge'),
|
|
'canvas should track selected edges separately from selected nodes'
|
|
);
|
|
assert(
|
|
canvasHtml.includes('technologyManifest'),
|
|
'canvas should load the selected technology manifest'
|
|
);
|
|
assert(
|
|
canvasHtml.includes('standard_bend'),
|
|
'route editor should offer standard_bend as a routing type'
|
|
);
|
|
assert(
|
|
canvasHtml.includes('findSameFamilyRouteCrossing'),
|
|
'canvas should validate same-family route crossings'
|
|
);
|