@@ -19,6 +19,7 @@
(define-module (gnu tests gdm)
#:use-module (gnu tests)
#:use-module (gnu packages freedesktop)
+ #:use-module (gnu packages ocr)
#:use-module (gnu services)
#:use-module (gnu services desktop)
#:use-module (gnu services xorg)
@@ -57,6 +58,7 @@ (define* (run-gdm-test #:key wayland?)
#~(begin
(use-modules (gnu build marionette)
(ice-9 format)
+ (srfi srfi-26)
(srfi srfi-64))
(let ((marionette (make-marionette (list #$vm)))
@@ -73,11 +75,18 @@ (define* (run-gdm-test #:key wayland?)
(start-service 'xorg-server))
marionette))
- (test-assert "gdm ready"
- (wait-for-file "/var/run/gdm/gdm.pid" marionette))
-
- ;; waiting for gdm.pid is not enough, tests may still sporadically fail.
- (sleep 1)
+ (test-group "gdm ready"
+ (test-assert "PID file present"
+ (wait-for-file "/var/run/gdm/gdm.pid" marionette))
+
+ ;; Waiting for gdm.pid is not enough, tests may still sporadically
+ ;; fail; ensure that the login screen is up.
+ ;; XXX: GNU Ocrad works but with '--invert' only.
+ (test-assert "login screen up"
+ (wait-for-screen-text marionette
+ (cut string-contains <> "Guix")
+ #:ocr #$(file-append ocrad "/bin/ocrad")
+ #:ocr-arguments "--invert")))
(test-equal (string-append "session-type is " expected-session-type)
expected-session-type