diff --git a/frontend/src/pages/dev/FieldTestPage.jsx b/frontend/src/pages/dev/FieldTestPage.jsx index 7601697b..374c442b 100755 --- a/frontend/src/pages/dev/FieldTestPage.jsx +++ b/frontend/src/pages/dev/FieldTestPage.jsx @@ -690,7 +690,7 @@ const FieldTestPage = () => {
+
Development interface for testing and approving field implementations. Focus on working field types and approval workflow.
diff --git a/frontend/src/pages/dev/SettingsMockPage.jsx b/frontend/src/pages/dev/SettingsMockPage.jsx index e235910d..0f925510 100755 --- a/frontend/src/pages/dev/SettingsMockPage.jsx +++ b/frontend/src/pages/dev/SettingsMockPage.jsx @@ -108,7 +108,7 @@ const SettingsMockPage = () => { {/* Note about header search integration */} -
{
)}
-
No actions yet. Click buttons above to see logs.
diff --git a/frontend/src/utils/checkTailwindClasses.test.js b/frontend/src/utils/checkTailwindClasses.test.js
new file mode 100644
index 00000000..14699093
--- /dev/null
+++ b/frontend/src/utils/checkTailwindClasses.test.js
@@ -0,0 +1,62 @@
+// Regression tests for scripts/check-tailwind-classes.mjs (run via node against
+// a fixture tree, since the script reads src/ and dist/assets/ from cwd).
+import { execFileSync } from 'node:child_process';
+import fs from 'node:fs';
+import os from 'node:os';
+import path from 'node:path';
+import { fileURLToPath } from 'node:url';
+import { afterEach, describe, expect, it } from 'vitest';
+
+const SCRIPT = path.resolve(
+ path.dirname(fileURLToPath(import.meta.url)),
+ '../../scripts/check-tailwind-classes.mjs'
+);
+
+let dir;
+afterEach(() => dir && fs.rmSync(dir, { recursive: true, force: true }));
+
+function fixture(jsx, css) {
+ dir = fs.mkdtempSync(path.join(os.tmpdir(), 'twcheck-'));
+ fs.mkdirSync(path.join(dir, 'src'));
+ fs.mkdirSync(path.join(dir, 'dist/assets'), { recursive: true });
+ fs.writeFileSync(path.join(dir, 'src/App.jsx'), jsx);
+ fs.writeFileSync(path.join(dir, 'dist/assets/app.css'), css);
+}
+
+function run() {
+ try {
+ execFileSync('node', [SCRIPT], { cwd: dir, encoding: 'utf8' });
+ return { code: 0 };
+ } catch (e) {
+ return { code: e.status, out: `${e.stdout}${e.stderr}` };
+ }
+}
+
+describe('check-tailwind-classes', () => {
+ it('fails on a clsx object key missing from the built CSS', () => {
+ fixture(
+ `export const A = (on) =>
Action Log
-