diff --git a/tests.scm b/tests.scm new file mode 100644 index 0000000..0cd9894 --- /dev/null +++ b/tests.scm @@ -0,0 +1,47 @@ +(add-to-load-path (dirname (current-filename))) + +(use-modules + (e2e marionette) + (e2e testing) + (ice-9 regex) + ((server) #:prefix server-) + (srfi srfi-1)) + +(define (lines s) + (string-split s #\newline)) + +(define (get-result-line client) + (let ((display (get-display client))) + (last (lines (string-trim-right display))))) + +(define server (server-start)) +(define firefox (start-firefox)) +(define client (client-setup)) + +(navigate client "http://localhost:8080") +(sleep 5) + +(define-test preload-loads-successfully + (let* ((display (get-display client)) + (first-line (first (lines display)))) + (assert (string-match "Loading prelude \\.+ done" first-line) + (format #f "Prelude load line: ~s" first-line)))) + +(define-test six-seven-times-dot-cr-yields-42 + (input-line client "6 7 * . CR") + (let* ((result-line (get-result-line client))) + (assert (string=? "42" result-line) + (format #f "Result line: ~s" result-line)))) + +(define-test define-hello-then-run-hello-prints-message + (input-line client ": HELLO .\" Hello, world!\" CR ;") + (input-line client "HELLO") + (let* ((result-line (get-result-line client))) + (assert (string=? "Hello, world!" result-line) + (format #f "Result line: ~s" result-line)))) + +(run-tests) + +(client-teardown client) +(close-firefox firefox) +(server-stop server)