mirror of
https://github.com/penpot/penpot.git
synced 2026-05-23 08:53:39 +00:00
✨ Add --log-level flag to frontend test runner
Lets a caller pin `app.common.logging`'s level for the duration of a
test run via `--log-level <trace|debug|info|warn|error>`. The flag is
off by default, so when absent the runner doesn't touch logger state
and stdout looks exactly as before.
When passed, the runner calls `(l/setup! {:app level})` right before
dispatching to the test block, so production code exercised by tests
emits only at the requested level or higher.
pnpm run test:quiet -- --focus frontend-tests.logic.groups-test \
--log-level warn
Composes with `--focus`; the two flags are independent.
Caveats worth knowing: top-level log calls fired at namespace load
time run before the runner parses CLI options and therefore slip past
this flag; direct `println` / `js/console.log` calls bypass the
logging system entirely and are unaffected.
This commit is contained in:
parent
c29f32c7ae
commit
e252bcf901
@ -10,6 +10,7 @@ From `frontend/`:
|
||||
- Full unit test run: `pnpm run test:quiet`.
|
||||
- Focus a frontend CLJS test namespace: `pnpm run test:quiet -- --focus frontend-tests.logic.components-and-tokens`.
|
||||
- Focus one frontend CLJS test var: `pnpm run test:quiet -- --focus frontend-tests.logic.components-and-tokens/change-spacing-token-in-main-updates-copy-layout`.
|
||||
- Quiet `app.*` logging during a run: append `--log-level warn` (or `trace|debug|info|warn|error`).
|
||||
- Build test target only: `pnpm run build:test`.
|
||||
- After `pnpm run build:test`, direct compiled runner focus is faster: `node target/tests/test.js --focus frontend-tests.logic.components-and-tokens/change-spacing-token-in-main-updates-copy-layout`.
|
||||
- Watch tests: `pnpm run watch:test`.
|
||||
|
||||
@ -292,6 +292,9 @@ pnpm run test -- --focus frontend-tests.logic.components-and-tokens
|
||||
|
||||
# To run a single frontend test
|
||||
pnpm run test -- --focus frontend-tests.logic.components-and-tokens/change-token-in-main
|
||||
|
||||
# To quiet app-level logging during the run (trace|debug|info|warn|error)
|
||||
pnpm run test -- --focus frontend-tests.logic.components-and-tokens --log-level warn
|
||||
```
|
||||
|
||||
For non-interactive runs (CI, scripted invocations, agent loops), use the quiet
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
(ns frontend-tests.runner
|
||||
(:require
|
||||
[app.common.logging :as l]
|
||||
[cljs.test :as t]
|
||||
[clojure.string :as str]
|
||||
[clojure.tools.cli :refer [parse-opts]]
|
||||
@ -93,8 +94,14 @@
|
||||
(assert (every? find-ns-obj test-namespaces)
|
||||
"test-namespaces contains a namespace that isn't required in runner.cljs")
|
||||
|
||||
(def ^:private log-levels
|
||||
#{:trace :debug :info :warn :error})
|
||||
|
||||
(def cli-options
|
||||
[["-f" "--focus FOCUS" "Run one test namespace or one test var, e.g. frontend-tests.logic.components-and-tokens/change-token-in-main"]
|
||||
["-l" "--log-level LEVEL" "Set app logger level: trace|debug|info|warn|error"
|
||||
:parse-fn keyword
|
||||
:validate [log-levels "must be one of trace, debug, info, warn, error"]]
|
||||
["-h" "--help"]])
|
||||
|
||||
(defn- argv
|
||||
@ -114,7 +121,9 @@
|
||||
summary "\n\n"
|
||||
"Focus examples:\n"
|
||||
" pnpm run test -- --focus frontend-tests.logic.components-and-tokens\n"
|
||||
" pnpm run test -- --focus frontend-tests.logic.components-and-tokens/change-token-in-main"))
|
||||
" pnpm run test -- --focus frontend-tests.logic.components-and-tokens/change-token-in-main\n\n"
|
||||
"Log level example (quiets app logging during the run):\n"
|
||||
" pnpm run test -- --focus frontend-tests.logic.groups-test --log-level warn"))
|
||||
|
||||
(defn- fail!
|
||||
[message]
|
||||
@ -218,8 +227,10 @@
|
||||
(println (usage summary))
|
||||
(.exit js/process 0))
|
||||
|
||||
(:focus options)
|
||||
(run-focused-test! (:focus options))
|
||||
|
||||
:else
|
||||
(run-test-vars! (map #(selected-tests {:ns %}) test-namespaces)))))
|
||||
(do
|
||||
(when-let [level (:log-level options)]
|
||||
(l/setup! {:app level}))
|
||||
(if (:focus options)
|
||||
(run-focused-test! (:focus options))
|
||||
(run-test-vars! (map #(selected-tests {:ns %}) test-namespaces)))))))
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user