Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
76 commits
Select commit Hold shift + click to select a range
040c41d
update existing tests to pass
Kcheung42 Oct 21, 2025
ef866c4
update for headless mode
Kcheung42 Oct 22, 2025
e06b1e3
optimize tests
Kcheung42 Oct 22, 2025
a37d973
update feature name
Kcheung42 Oct 22, 2025
afa0b6d
add comments back in
Kcheung42 Oct 22, 2025
df56d37
rename scenarios
Kcheung42 Oct 23, 2025
c4e8aa0
fix format
Kcheung42 Oct 23, 2025
4c0c0aa
refactor
Kcheung42 Oct 23, 2025
d226738
fix format
Kcheung42 Oct 23, 2025
0fd7265
add step functions for ensuring outputs are NOT selected and inputs a…
Kcheung42 Oct 24, 2025
ca32c2e
simplify tests to core set of scenarios for conditionals
Kcheung42 Oct 28, 2025
131411c
add headless mode and query tag param
Kcheung42 Nov 18, 2025
a5c5295
refactor test matrix data to a map
Kcheung42 Nov 18, 2025
8f7f467
refactor to use keywords for module-combo
Kcheung42 Nov 19, 2025
f023907
update test data edn
Kcheung42 Nov 19, 2025
ecc45ba
add recursive search to all conditionals in ancestors
Kcheung42 Nov 19, 2025
a6a3787
fix scenario gen
Kcheung42 Nov 20, 2025
05434ff
update step files
Kcheung42 Nov 20, 2025
3739ad8
Merge branch 'kc-BHP1-1454-update-existing-cucumber-tests' into kc-BH…
Kcheung42 Nov 20, 2025
7a7ebf1
remove prn statement
Kcheung42 Nov 20, 2025
f2358b3
move step files
Kcheung42 Nov 20, 2025
98f05e4
Merge branch 'kc-BHP1-1454-update-existing-cucumber-tests' into kc-BH…
Kcheung42 Nov 20, 2025
efabf0f
include entity's own conditionals for recursive expansion
Kcheung42 Nov 20, 2025
16bfa9d
fix merge conflict
Kcheung42 Dec 1, 2025
4bed917
Merge branch 'BHP1-1435-feat-improve-cucumber-testing' into kc-BHP1-1…
Kcheung42 Dec 1, 2025
4caf659
Merge branch 'kc-BHP1-1454-update-existing-cucumber-tests' into kc-BH…
Kcheung42 Dec 1, 2025
7c92524
fix helper step files and feature files
Kcheung42 Dec 1, 2025
e97caf3
Merge branch 'kc-BHP1-1454-update-existing-cucumber-tests' into kc-BH…
Kcheung42 Dec 1, 2025
cc0ae6e
shorten wait time
Kcheung42 Dec 1, 2025
40ae519
add steps to deps.edn
Kcheung42 Dec 2, 2025
4f919bb
Merge branch 'kc-BHP1-1454-update-existing-cucumber-tests' into kc-BH…
Kcheung42 Dec 2, 2025
9333cd6
update step functions
Kcheung42 Dec 2, 2025
739e6c9
update step functions
Kcheung42 Dec 3, 2025
28c1e8b
Merge branch 'kc-BHP1-1454-update-existing-cucumber-tests' into kc-BH…
Kcheung42 Dec 3, 2025
2c9211f
add new feature files
Kcheung42 Dec 3, 2025
20aaa0d
update generate scenario
Kcheung42 Dec 3, 2025
d61a049
update generate matrix function signature to accept db
Kcheung42 Dec 3, 2025
78ab98c
clean
Kcheung42 Dec 3, 2025
faf7234
remove tests
Kcheung42 Dec 3, 2025
25c8caa
add wait for wizard after submodule navigation
Kcheung42 Dec 3, 2025
804fb5f
Merge branch 'kc-BHP1-1454-update-existing-cucumber-tests' into kc-BH…
Kcheung42 Dec 3, 2025
c2e19b1
update wait time
Kcheung42 Dec 3, 2025
45f1d4c
Merge branch 'kc-BHP1-1454-update-existing-cucumber-tests' into kc-BH…
Kcheung42 Dec 3, 2025
21647c2
remove tests related to fire type
Kcheung42 Dec 4, 2025
2d947d1
return vectors for edn structure instead of lazy lists
Kcheung42 Dec 4, 2025
625c6bc
remove uncessary assert
Kcheung42 Dec 4, 2025
9ab4dd8
update test matrix data
Kcheung42 Dec 4, 2025
59328ad
update gherkin arg syntax
Kcheung42 Dec 5, 2025
46c8e31
update feature syntax
Kcheung42 Dec 5, 2025
3e1540d
clean wind direction feature
Kcheung42 Dec 5, 2025
42f005b
remove fire type scenarios
Kcheung42 Dec 5, 2025
e845055
remove mortality wind speed scenario
Kcheung42 Dec 5, 2025
f063af0
comment out surface crown wind adjustment factor scenario
Kcheung42 Dec 5, 2025
fe2d58a
fix 10-h fuel moisture tests
Kcheung42 Dec 8, 2025
6c8e782
clean tests
Kcheung42 Dec 8, 2025
2c3ba9f
clean wind adjustment factor
Kcheung42 Dec 8, 2025
9442f76
delete erroneous scenarios
Kcheung42 Dec 8, 2025
091977b
update fuel model
Kcheung42 Dec 8, 2025
c172ccf
remove invalid test
Kcheung42 Dec 8, 2025
561ecb7
add investigate comments
Kcheung42 Dec 8, 2025
50eb051
fix given
Kcheung42 Dec 8, 2025
867feca
refactor feature tests
Kcheung42 Dec 9, 2025
33cdbc0
rename feature files
Kcheung42 Dec 9, 2025
6973812
add tags
Kcheung42 Dec 10, 2025
eaf3446
increase wait
Kcheung42 Dec 10, 2025
6712961
update worksheet step
Kcheung42 Dec 10, 2025
dbd9f67
remove cucumber_test_generator component
Kcheung42 Dec 10, 2025
5944ebb
clean
Kcheung42 Dec 10, 2025
b41f0d4
update docstring
Kcheung42 Dec 10, 2025
fbb0c22
workspace file
Kcheung42 Dec 10, 2025
6751e9a
add headless option for running cucumber tests
Kcheung42 Dec 10, 2025
5cfaa56
add docstring to helper
Kcheung42 Dec 10, 2025
2c419b3
revert change
Kcheung42 Dec 10, 2025
f3e2514
add missing row entry in test
Kcheung42 Dec 10, 2025
a54f371
revert unintended chagnes
Kcheung42 Dec 10, 2025
26d43f7
fix deps.edn
Kcheung42 Dec 10, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 36 additions & 7 deletions components/cucumber/src/cucumber/runner.clj
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,9 @@
[tegere.loader :refer [load-feature-files]]
[tegere.steps :refer [registry]]
[tegere.runner :refer [run]]
[cucumber.webdriver :as w]))
[tegere.query :as query]
[cucumber.webdriver :as w]
))

;; Debug

Expand All @@ -32,8 +34,19 @@


(defn run-cucumber-tests
"Runs cucumber tests "
[{:keys [features steps url debug?] :as opts}]
"Runs cucumber tests.

Options:
:features - Path to feature files directory
:steps - Path to step definitions directory
:url - URL to run tests against
:debug? - Keep browser open after tests (default: false)
:headless? - Run browser in headless mode (default: false)
:query-string - Filter tests by query
:stop - Stop on first failure
:browser - Browser type (default: :chrome)
:browser-path - Path to browser executable"
[{:keys [features steps url debug? headless? query-string stop] :as opts}]

(when steps
(load-steps! (io/file steps)))
Expand All @@ -42,15 +55,17 @@
(println [:WEBDRIVER ]driver)
(let [results (run (load-feature-files (io/file features))
@registry
{}
(cond-> {}
query-string (assoc ::query/query-tree query-string)
stop (assoc :tegere.runner/stop stop))
{:initial-ctx {:driver driver :url url}})]

;; Do something with output

;; Quit Driver
(when-not debug?
(w/quit driver))
results)))
(:tegere.runner/outcome-summary-report results))))


(comment
Expand All @@ -74,6 +89,20 @@
:browser-path "/usr/bin/google-chrome"
:url "http://localhost:8081/worksheets"})

;; Mac - Headless Mode
(run-cucumber-tests {:headless? true
:features "./../../features"
:browser :chrome
:url "http://localhost:8081/worksheets"})

;; Linux - Headless Mode
(run-cucumber-tests {:headless? true
:features "./../../features"
:steps "./../../steps"
:browser :chrome
:browser-path "/usr/bin/google-chrome"
:url "http://localhost:8081/worksheets"})

(def run-test-10-times
(let [results (doall (map (fn [_]
(run-cucumber-tests {:debug? true
Expand All @@ -84,9 +113,9 @@
:url "http://localhost:8081/worksheets"}))
(range 10)))
failed (apply + (map #(get-in % [:tegere.runner/outcome-summary :tegere.runner/features-failed])
results))
results))
passed (apply + (map #(get-in % [:tegere.runner/outcome-summary :tegere.runner/features-passed])
results))]
results))]
(prn "passed: " passed)
(prn "failed: " failed)))

Expand Down
23 changes: 14 additions & 9 deletions components/cucumber/src/cucumber/webdriver.clj
Original file line number Diff line number Diff line change
Expand Up @@ -68,18 +68,23 @@

(defn chrome-driver
"Instatiate a Chrome WebDriver."
[{:keys [browser-path]}]
[{:keys [browser-path headless?]}]
(let [options (ChromeOptions.)]
(when browser-path (.setBinary options browser-path))
(.addArguments options (into-array
["start-maximized" ; // open Browser in maximized mode
"disable-infobars" ; // disabling infobars
"--disable-extensions" ; // disabling extensions
"--disable-gpu" ; // applicable to windows os only
"--disable-dev-shm-usage" ; // overcome limited resource problems
"--no-sandbox" ; // Bypass OS security model
"--remote-debugging-port=9222"]))
(System/setProperty "webdriver.chrome.driver" "/usr/local/bin/chromedriver")
(cond-> ["disable-infobars" ; // disabling infobars
"--disable-extensions" ; // disabling extensions
"--disable-gpu" ; // applicable to windows os only
"--disable-dev-shm-usage" ; // overcome limited resource problems
"--no-sandbox" ; // Bypass OS security model
"--remote-debugging-port=9222"]
headless? (concat ["--headless=new" ; // run in headless mode
"start-maximized"
"--window-size=2560,1080"]) ; // set window size for headless
(not headless?) (conj "start-maximized")))) ; // maximize when not headless
(System/setProperty "webdriver.chrome.driver"
(or (System/getenv "CHROMEDRIVER_PATH")
"/usr/local/bin/chromedriver"))
(ChromeDriver. options)))

(defn firefox-driver
Expand Down
67 changes: 35 additions & 32 deletions deps.edn
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
{:dev
{:extra-paths ["development"
"target"
"steps"

;; Components
"components/async_utils/src"
Expand Down Expand Up @@ -37,7 +38,6 @@
"bases/datomic_store/src"
"bases/datom_store/src"]


:extra-deps {;; Clojure Deps
bk/ring-gzip {:mvn/version "0.3.0"}
clj-http/clj-http {:mvn/version "3.10.1"}
Expand Down Expand Up @@ -66,41 +66,44 @@
tegere/tegere {:mvn/version "0.1.5"}

;; Clojure Common
bidi/bidi {:mvn/version "2.1.6"}
datascript/datascript {:mvn/version "1.5.3"}
cljs-ajax/cljs-ajax {:mvn/version "0.8.4"}
nano-id/nano-id {:mvn/version "1.1.0"}
com.github.rosejn/msgpack-cljc {:mvn/version "2.0.359"}
sig-gis/triangulum {:git/url "https://github.com/sig-gis/triangulum"
:sha "3d41dab63e1bc8ebe046f64db44ae3df986f5bdf"}
org.clojure/data.csv {:mvn/version "1.0.0"}
bidi/bidi {:mvn/version "2.1.6"}
datascript/datascript {:mvn/version "1.5.3"}
cljs-ajax/cljs-ajax {:mvn/version "0.8.4"}
nano-id/nano-id {:mvn/version "1.1.0"}
com.github.rosejn/msgpack-cljc {:mvn/version "2.0.359"}
sig-gis/triangulum {:git/url "https://github.com/sig-gis/triangulum"
:sha "3d41dab63e1bc8ebe046f64db44ae3df986f5bdf"}
org.clojure/data.csv {:mvn/version "1.0.0"}

;; Clojure/Script Deps
com.bhauman/figwheel-main {:mvn/version "0.2.18"}
org.clojure/clojurescript {:mvn/version "1.11.54"}
org.clojure/core.async {:mvn/version "1.2.603"}
binaryage/devtools {:mvn/version "1.0.5"}
re-frisk/re-frisk {:mvn/version "1.6.0"}
com.cognitect/transit-cljs {:mvn/version "0.8.264"}
re-frame/re-frame {:mvn/version "1.3.0-rc3"}
day8.re-frame/http-fx {:mvn/version "0.2.4"}
re-posh/re-posh {:mvn/version "0.3.3"}
reagent/reagent {:mvn/version "0.10.0"}
re-frame-utils/re-frame-utils {:mvn/version "0.1.0"}
cljsjs/vega {:mvn/version "5.25.0-0"}
cljsjs/vega-embed {:mvn/version "6.22.2-0"}
cljsjs/vega-lite {:mvn/version "5.14.1-0"}
day8.re-frame/test {:mvn/version "0.1.5"}
austinbirch/reactive-entity {:mvn/version "0.2.0"}
com.bhauman/figwheel-main {:mvn/version "0.2.18"}
org.clojure/clojurescript {:mvn/version "1.11.54"}
org.clojure/core.async {:mvn/version "1.2.603"}
binaryage/devtools {:mvn/version "1.0.5"}
re-frisk/re-frisk {:mvn/version "1.6.0"}
com.cognitect/transit-cljs {:mvn/version "0.8.264"}
re-frame/re-frame {:mvn/version "1.3.0-rc3"}
day8.re-frame/http-fx {:mvn/version "0.2.4"}
re-posh/re-posh {:mvn/version "0.3.3"}
reagent/reagent {:mvn/version "0.10.0"}
re-frame-utils/re-frame-utils {:mvn/version "0.1.0"}
cljsjs/vega {:mvn/version "5.25.0-0"}
cljsjs/vega-embed {:mvn/version "6.22.2-0"}
cljsjs/vega-lite {:mvn/version "5.14.1-0"}
day8.re-frame/test {:mvn/version "0.1.5"}
austinbirch/reactive-entity {:mvn/version "0.2.0"}

;; Behave CMS
applied-science/js-interop {:mvn/version "0.3.3"}
com.draines/postal {:mvn/version "2.0.3"}
garden/garden {:mvn/version "1.3.10"}
herb/herb {:mvn/version "0.10.0"}
hickory/hickory {:mvn/version "0.7.1"}
markdown-clj/markdown-clj {:mvn/version "1.11.1"}
org.clojure/tools.cli {:mvn/version "1.0.194"}}
applied-science/js-interop {:mvn/version "0.3.3"}
com.draines/postal {:mvn/version "2.0.3"}
garden/garden {:mvn/version "1.3.10"}
herb/herb {:mvn/version "0.10.0"}
hickory/hickory {:mvn/version "0.7.1"}
markdown-clj/markdown-clj {:mvn/version "1.11.1"}
org.clojure/tools.cli {:mvn/version "1.0.194"}

;; Testing
org.seleniumhq.selenium/selenium-java {:mvn/version "4.23.0"}}

:jvm-opts ["--add-exports=java.base/java.lang=ALL-UNNAMED"
"--add-exports=java.desktop/sun.awt=ALL-UNNAMED"
Expand Down
110 changes: 78 additions & 32 deletions development/user.clj
Original file line number Diff line number Diff line change
@@ -1,12 +1,41 @@
(ns user)

(comment
(require '[behave.server :as server]
'[behave.handlers :refer [vms-sync!]]
'[config.interface :refer [get-config load-config]])

(server/init-config!)
(server/init-db! (get-config :database :config))
(require '[cucumber.runner :refer [run-cucumber-tests]])

;; Takes 3 hr to complete
(time
(run-cucumber-tests
{:debug? false
:headless? true
:features "features"
:steps "steps"
:stop true
:browser :chrome
:url "http://localhost:8081/worksheets"}))

;; Takes 30 min to complete
(time
(run-cucumber-tests
{:debug? false
:headless? true
:features "features"
:steps "steps"
:stop true
:query-string '(and "core" (not "extended"))
:browser :chrome
:url "http://localhost:8081/worksheets"}))
)

(comment
(do
(require '[behave.server :as server]
'[behave.handlers :refer [vms-sync!]]
'[config.interface :refer [get-config load-config]])

(server/init-config!)
(server/init-db! (get-config :database :config)))

(vms-sync!)

Expand Down Expand Up @@ -80,11 +109,11 @@

(def module-help-pages (map (partial get-module-help-pages db) modules))

(def DOCTYPES {:map "<!DOCTYPE map PUBLIC \"-//OASIS//DTD DITA Map//EN\" \"map.dtd\">"
(def DOCTYPES {:map "<!DOCTYPE map PUBLIC \"-//OASIS//DTD DITA Map//EN\" \"map.dtd\">"
:topic "<!DOCTYPE topic PUBLIC \"-//OASIS//DTD DITA Topic//EN\" \"topic.dtd\">"})

(defn insert-doctype [doctype xml]
(let [lines (str/split-lines xml)
(let [lines (str/split-lines xml)
result (concat (take 1 lines) [(get DOCTYPES doctype)] (drop 1 lines))]
(str/join "\n" result)))

Expand All @@ -93,7 +122,7 @@

(defn generate-snippet [title help-key body-as-hiccup]
(let [body (if (empty? body-as-hiccup) nil body-as-hiccup)]
(insert-topic-doctype
(insert-topic-doctype
(xml/indent-str
(xml/sexp-as-element
[:topic {:id title}
Expand Down Expand Up @@ -133,14 +162,13 @@
[:map
(map gen-topic-ref dita-topics)]))))

(gen-ditamap [{:href "Content/Modules/Modules.dita"
:title "Modules"
:topics [{:href "Content/Modules/Surface.dita"
:title "Surface"}]}])

(gen-ditamap [{:href "Content/Modules/Modules.dita"
:title "Modules"
:topics [{:href "Content/Modules/Surface.dita"
:title "Surface"}]}])

;; Markdown to Hiccup

db

;; Generate DITA Project Layout
Expand All @@ -163,8 +191,6 @@
;; - Mortality
;; - Outputs
;; - Inputs



module-help-pages
(map #(let [submodule %]
Expand Down Expand Up @@ -206,19 +232,39 @@
[snippet-name help-key]))]

(spit submodule-topic-file
(generate-topic
(str/replace submodule #" " "_")
submodule
(->snake submodule)

(concat
'([:h1 submodule])
(map #(let [[snippet-name help-key] %
ref (str "../../../../Resources/Snippets/Variables/" snippet-name ".dita#" )]
[:p {:conref %}])))
[]
[:h1 "Hello World"])


)))))))
)
(generate-topic
(str/replace submodule #" " "_")
submodule
(->snake submodule)

(concat
'([:h1 submodule])
(map #(let [[snippet-name help-key] %
ref (str "../../../../Resources/Snippets/Variables/" snippet-name ".dita#")]
[:p {:conref %}])))
[]
[:h1 "Hello World"])))))))))

;; ===========================================================================================================
;; Test Matrix Generator
;; ===========================================================================================================
;; Generate comprehensive test matrix report for all :group/conditionals in the schema
;; This helps identify which conditionals need Cucumber tests

(comment
;; Initialize CMS database first
(require '[behave-cms.server :as cms])
(cms/init-db!)

;; Load test matrix generator
(require '[test-matrix-generator :as tmg] :reload)

;; Print quick summary
(tmg/print-summary)

;; Generate full test matrix report (Markdown + EDN)
;; Creates: development/test_matrix_report.md and development/test_matrix_data.edn
(tmg/generate-test-matrix!)

;; Generate with custom paths
(tmg/generate-test-matrix! "custom-report.md" "custom-data.edn"))
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
@core
Feature: Contain & Surface Input - Suppression -> Estimated Resource Arrival Time and Duration

@core
Scenario: Estimated Resource Arrival Time and Duration is displayed
Given I have started a new Surface & Contain Worksheet in Guided Mode
When these input paths are entered
| submodule | group | value |
| Suppression | Contain Mode | Calculate Minimum Production Rate Only |
Then the following input paths are displayed:
| submodule | group |
| Suppression | Estimated Resource Arrival Time and Duration |
12 changes: 12 additions & 0 deletions features/contain-input_suppression_resources.feature
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
@core
Feature: Contain & Surface Input - Suppression -> Resources

@core
Scenario: Resources is displayed
Given I have started a new Surface & Contain Worksheet in Guided Mode
When these input paths are entered
| submodule | group | value |
| Suppression | Contain Mode | Add Resources |
Then the following input paths are displayed:
| submodule | group |
| Suppression | Resources |
Loading