Skip to content

Commit

Permalink
Merge pull request #436 from lread/lread-bb-imageio
Browse files Browse the repository at this point in the history
road to bb: ImageIO no longer used in tests
  • Loading branch information
lread authored May 23, 2022
2 parents f8cc870 + ce9f4c1 commit d851877
Show file tree
Hide file tree
Showing 3 changed files with 40 additions and 15 deletions.
8 changes: 8 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,14 @@ jobs:
key: cljdeps-${{ hashFiles('deps.edn', 'bb.edn') }}
restore-keys: cljdeps-

- name: "Install Missing Windows Bits"
if: ${{ matrix.os == 'windows' }}
run: |
Import-Module "$env:ChocolateyInstall\helpers\chocolateyProfile.psm1"
choco install --no-progress --yes imagemagick
refreshenv
Write-Output "$env:PATH" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
- name: "Setup Java"
uses: actions/setup-java@v3
with:
Expand Down
11 changes: 9 additions & 2 deletions script/tools_versions.clj
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,17 @@
[helper.os :as os]
[helper.shell :as shell]))

(defn- first-line [s]
(-> s string/split-lines first))

(def tools
[;; earlier versions of java used -version and spit version info to stderr
{:oses :all :name "Java" :type :bin :app "java" :args "-version" :shell-opts {:out :string :err :string :continue true}}
{:oses :all :name "Babashka" :type :bin :app "bb"}

{:oses [:mac :win] :name "Image Magick" :type :bin :app "magick" :version-post-fn first-line}
{:oses [:unix] :name "Image Magick" :type :bin :app "identify" :version-post-fn first-line}

{:oses [:unix] :name "Chrome" :type :bin :app "google-chrome"} ;; only handling nix for now
{:oses [:mac] :name "Chrome" :type :mac-app :app "Google Chrome"}
{:oses [:win] :name "Chrome" :type :win-package :app "Google Chrome"}
Expand All @@ -20,7 +26,7 @@
{:oses [:unix] :name "Firefox" :type :bin :app "firefox"} ;; only handling nix for now
{:oses [:mac] :name "Firefox" :type :mac-app :app "Firefox"}
{:oses [:win] :name "Firefox" :type :win-package :app #"Mozilla Firefox .*"}
{:oses :all :name "Firefox Webdriver" :type :bin :app "geckodriver" :version-post-fn #(->> % string/split-lines first)}
{:oses :all :name "Firefox Webdriver" :type :bin :app "geckodriver" :version-post-fn first-line}

{:oses [:mac] :name "Edge" :type :mac-app :app "Microsoft Edge"}
{:oses [:win] :name "Edge" :type :win-package :app "Microsoft Edge"}
Expand Down Expand Up @@ -114,7 +120,8 @@
[{:keys [app shell-opts args version-post-fn]}]
(if-let [found-bin (some-> (fs/which app {:win-exts ["com" "exe" "bat" "cmd" "ps1"]})
str)]
(let [version-result (->> (shell/command shell-opts found-bin args)
;; call with app rather than found-bin to avoid Windows headaches
(let [version-result (->> (shell/command shell-opts app args)
(version-cmd-result shell-opts))
version-result (assoc version-result :path found-bin)]
(if (:error version-result)
Expand Down
36 changes: 23 additions & 13 deletions test/etaoin/api_test.clj
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
(ns etaoin.api-test
(:require [clojure.edn :as edn]
(:require [babashka.fs :as fs]
[clojure.edn :as edn]
[clojure.java.io :as io]
[clojure.java.shell :as shell]
[clojure.string :as str]
[clojure.test :refer :all]
[etaoin.api :refer :all]
[etaoin.test-report :as test-report]
[etaoin.util :refer [with-tmp-dir with-tmp-file]]
[slingshot.slingshot :refer [try+]])
(:import javax.imageio.ImageIO))

[slingshot.slingshot :refer [try+]]))

(defn numeric? [val]
(or (instance? Double val)
Expand All @@ -22,8 +22,11 @@
(when-let [override (System/getenv "ETAOIN_TEST_DRIVERS")]
(edn/read-string override)))

(defn os-name []
(first (str/split (System/getProperty "os.name") #"\s+")))

(defn get-drivers-from-prop []
(case (first (str/split (System/getProperty "os.name") #"\s+"))
(case (os-name)
"Linux" [:firefox :chrome]
"Mac" [:chrome :edge :firefox :safari]
"Windows" [:firefox :chrome :edge]
Expand Down Expand Up @@ -566,13 +569,23 @@
(is (str/starts-with? src "<!DOCTYPE html>"))
(is (str/starts-with? src "<html><head>")))))

(defn- valid-image? [file]
(if-let [image-magick (some-> (fs/which (if (= "Linux" (os-name))
"identify" ;; sacre ubuntu!
"magick"))
str)]
(let [{:keys [exit out]}
(if (= "Linux" (os-name))
(shell/sh image-magick (str file))
(shell/sh image-magick "identify" (str file)))]
(println out)
(zero? exit))
(throw (ex-info "please install image magick, we use it for screenshot image verification" {}))))

(deftest test-screenshot
(with-tmp-file "screenshot" ".png" path
(screenshot *driver* path)
(-> path
io/file
ImageIO/read
is)))
(is (valid-image? path))))

(deftest test-with-screenshots
(with-tmp-dir "screenshots" dir
Expand All @@ -587,10 +600,7 @@
(firefox? *driver*))
(with-tmp-file "screenshot" ".png" path
(screenshot-element *driver* {:id :css-test} path)
(-> path
io/file
ImageIO/read
is))))
(is (valid-image? path)))))

(deftest test-js-execute
(testing "simple result"
Expand Down

0 comments on commit d851877

Please sign in to comment.