From c29702ede126a35fc0784ad1b7d2a07659ab64a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89douard=20Lopez?= Date: Sat, 20 Jan 2024 02:47:45 +0100 Subject: [PATCH] docs(screenshots): setup docker, makefile and tests to automate screenshot follows #342 fixes #339 --- docker/Dockerfile | 22 +++++++++++ docs/assets/screenshots/.gitkeep | 0 makefile | 25 ++++++++---- tests/fixtures/constants.fish | 12 ++++++ tests/screenshot.test.fish | 67 ++++++++++++++++++++++++++++++++ 5 files changed, 119 insertions(+), 7 deletions(-) create mode 100644 docs/assets/screenshots/.gitkeep create mode 100644 tests/screenshot.test.fish diff --git a/docker/Dockerfile b/docker/Dockerfile index 46b6016b..507f71d2 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -38,5 +38,27 @@ RUN echo 'Symlink dev files' \ && ln -nfs "$(pwd)"/conf.d/*.fish ../conf.d/ \ && ln -nfs "$(pwd)"/functions/*.fish ../functions/ +FROM with-pure-installed as with-terminal-screenshot-installed +USER root +RUN apk add \ + --no-cache \ + chromium \ + nss \ + freetype \ + harfbuzz \ + ca-certificates \ + ttf-freefont \ + nodejs \ + npm + +# Tell Puppeteer to skip installing Chrome. We'll be using the installed package. +ENV PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium-browser + +RUN npm install \ + --global \ + terminal-screenshot \ + puppeteer +USER nemo + ENTRYPOINT ["fish", "-c"] CMD ["fishtape tests/*.test.fish"] diff --git a/docs/assets/screenshots/.gitkeep b/docs/assets/screenshots/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/makefile b/makefile index 2fdb5619..4b234d16 100644 --- a/makefile +++ b/makefile @@ -89,6 +89,13 @@ test-pure-on-nix: $(MAKE) dev-pure-on-nix CMD="${CMD}" TTY= +build-pure-doc: + docker build \ + --file ./docker/doc.Dockerfile \ + --tag=pure-doc \ + --load \ + ./ + serve-pure-doc: docker run \ --name mkdocs \ @@ -97,11 +104,15 @@ serve-pure-doc: --rm \ --publish 8000:8000 \ --volume=$$(pwd):/docs \ - pure-doc + pure-doc -build-pure-doc: - docker build \ - --file ./docker/doc.Dockerfile \ - --tag=pure-doc \ - --load \ - ./ + +.PHONY: build-pure-screenshot +build-pure-screenshot: + $(MAKE) build-pure-on FISH_VERSION=${FISH_VERSION} STAGE=with-terminal-screenshot-installed + + +.PHONY: run-pure-screenshot +run-pure-screenshot: CMD?=fishtape tests/*.test.fish +run-pure-screenshot: + $(MAKE) dev-pure-on FISH_VERSION=${FISH_VERSION} STAGE=with-terminal-screenshot-installed CMD="${CMD}" diff --git a/tests/fixtures/constants.fish b/tests/fixtures/constants.fish index 64c1a210..026abb6e 100644 --- a/tests/fixtures/constants.fish +++ b/tests/fixtures/constants.fish @@ -36,3 +36,15 @@ end function _print_filename --argument-names filename echo (set_color cyan)$filename(set_color normal) end + +function screenshot \ + --description "Take screenshot" \ + --argument-names \ + name + + fish_prompt \ + | terminal-screenshot \ + --output ./docs/assets/screenshots/$name.png \ + --background-color white \ + --margin 5 +end diff --git a/tests/screenshot.test.fish b/tests/screenshot.test.fish new file mode 100644 index 00000000..3b748f4e --- /dev/null +++ b/tests/screenshot.test.fish @@ -0,0 +1,67 @@ +source (status dirname)/fixtures/constants.fish +@echo (_print_filename (status filename)) + +function before_each + _purge_configs + source ../conf.d/pure.fish +end + +before_each +@test "screenshot `pure_enable_git false`" ( + set --universal pure_enable_git false + screenshot "pure_enable_git=false" +) $status -eq $SUCCESS + +before_each +@test "screenshot `pure_enable_git true `" ( + set --universal pure_enable_git true + screenshot "pure_enable_git=true" +) $status -eq $SUCCESS + +before_each +@test "screenshot `pure_enable_k8s false`" ( + set --universal pure_enable_k8s false + screenshot "pure_enable_k8s=false" +) $status -eq $SUCCESS + +before_each +@test "screenshot `pure_enable_k8s true `" ( + set --universal pure_enable_k8s true + screenshot "pure_enable_k8s=true" +) $status -eq $SUCCESS + +before_each +@test "screenshot `pure_enable_container_detection false`" ( + set --universal pure_enable_container_detection false + screenshot "pure_enable_container_detection=false" +) $status -eq $SUCCESS + +before_each +@test "screenshot `pure_enable_container_detection true `" ( + set --universal pure_enable_container_detection true + screenshot "pure_enable_container_detection=true" +) $status -eq $SUCCESS + +before_each +@test "screenshot `pure_enable_virtualenv false`" ( + set --universal pure_enable_virtualenv false + screenshot "pure_enable_virtualenv=false" +) $status -eq $SUCCESS + +before_each +@test "screenshot `pure_enable_virtualenv true `" ( + set --universal pure_enable_virtualenv true + screenshot "pure_enable_virtualenv=true" +) $status -eq $SUCCESS + +before_each +@test "screenshot `pure_enable_single_line_prompt false`" ( + set --universal pure_enable_single_line_prompt false + screenshot "pure_enable_single_line_prompt=false" +) $status -eq $SUCCESS + +before_each +@test "screenshot `pure_enable_single_line_prompt true `" ( + set --universal pure_enable_single_line_prompt true + screenshot "pure_enable_single_line_prompt=true" +) $status -eq $SUCCESS