mirror of
https://git.sr.ht/~eliasnaur/gio
synced 2026-07-01 07:35:40 +00:00
687ea833a3
This commit adds the first fully end-to-end test. It builds a very simple Gio app, loads it on Chrome, and checks that it works. To control Chrome, we use chromedp, a library in pure Go that takes care of starting the browser and talking to it via the devtools protocol. We add the test directly in the cmd module, since it mainly interacts with the gogio tool, and also because the code might turn into some sort of 'gogio test' command in the future. This does add chromedp and ui as test dependencies to go.mod, but GOPROXY should allow a 'go get' of gogio to not download their entire source code archives. We don't replace ui with ../../ui in the go.mod, to ensure that testing the cmd module works from anywhere without unintended differences. The test app being used is inside a testdata directory, to ensure it's not go-gettable, and that it doesn't otherwise affect the cmd module. Finally, the test itself is pretty simple. The app just paints a red background, and the test verifies that, once loaded, the background of the browser viewport is indeed red. The test does currently require Chrome or Chromium to be installed, which is fine for now. It may also require a GPU, though I don't have a headless machine to check for sure. The test uses Chrome in headless mode though, so it doesn't open up any visible browser window. All in all, the test succeeds in just over a second on my laptop with Chromium 77.0.3865.75. Signed-off-by: Daniel Martí <mvdan@mvdan.cc>