mirror of
https://github.com/penpot/penpot.git
synced 2026-06-01 13:10:21 +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`.
|
- 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 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`.
|
- 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`.
|
- 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`.
|
- 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`.
|
- 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
|
# To run a single frontend test
|
||||||
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
|
||||||
|
|
||||||
|
# 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
|
For non-interactive runs (CI, scripted invocations, agent loops), use the quiet
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
(ns frontend-tests.runner
|
(ns frontend-tests.runner
|
||||||
(:require
|
(:require
|
||||||
|
[app.common.logging :as l]
|
||||||
[cljs.test :as t]
|
[cljs.test :as t]
|
||||||
[clojure.string :as str]
|
[clojure.string :as str]
|
||||||
[clojure.tools.cli :refer [parse-opts]]
|
[clojure.tools.cli :refer [parse-opts]]
|
||||||
@ -93,8 +94,14 @@
|
|||||||
(assert (every? find-ns-obj test-namespaces)
|
(assert (every? find-ns-obj test-namespaces)
|
||||||
"test-namespaces contains a namespace that isn't required in runner.cljs")
|
"test-namespaces contains a namespace that isn't required in runner.cljs")
|
||||||
|
|
||||||
|
(def ^:private log-levels
|
||||||
|
#{:trace :debug :info :warn :error})
|
||||||
|
|
||||||
(def cli-options
|
(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"]
|
[["-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"]])
|
["-h" "--help"]])
|
||||||
|
|
||||||
(defn- argv
|
(defn- argv
|
||||||
@ -114,7 +121,9 @@
|
|||||||
summary "\n\n"
|
summary "\n\n"
|
||||||
"Focus examples:\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\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!
|
(defn- fail!
|
||||||
[message]
|
[message]
|
||||||
@ -218,8 +227,10 @@
|
|||||||
(println (usage summary))
|
(println (usage summary))
|
||||||
(.exit js/process 0))
|
(.exit js/process 0))
|
||||||
|
|
||||||
(:focus options)
|
|
||||||
(run-focused-test! (:focus options))
|
|
||||||
|
|
||||||
:else
|
: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