gemini-testing / gemini-gui Goto Github PK
View Code? Open in Web Editor NEWGUI for gemini
License: MIT License
GUI for gemini
License: MIT License
Add fade
and swipe
modes in addition to the existing 3-side gemini difference
mode.
Also, github have slightly different difference
mode, which implemented in the package too, and this mode perhaps can be ported in gemini-gui
too (not for replace existing but in addition).
Demo: http://mxtnr.ru/image-diff-view/
Repo: https://github.com/a-x-/image-diff-view
Npm: https://www.npmjs.com/package/image-diff-view
Github image diff view modes: https://github.com/blog/817-behold-image-view-modes
npm install --save-dev gemini-gui
test:gui
command to package.json
:{
// ...
"scripts": {
"test:gui": "gemini-gui -p 8076 ./gemini",
}
}
npm run test:gui
Run
button to run testsgemini-gui server is terminated
npm run script is terminated, but gemini-gui is still running and occupies the port forever
$ grep test:gui package.json
"test:gui": "gemini-gui -p 8076 ./gemini",
$ npm run test:gui
> [email protected] test:gui /Users/user/src/somepkg
> gemini-gui -p 8076 ./gemini
GUI is running at http://localhost:8076
✓ somepkg home [chrome]
Total: 1 Passed: 1 Failed: 0 Skipped: 0 Retries: 0
^CCancelling...
$ npm run test:gui
> [email protected] test:gui /Users/user/src/somepkg
> gemini-gui -p 8076 ./gemini
events.js:160
throw er; // Unhandled 'error' event
^
Error: listen EADDRINUSE 127.0.0.1:8076
at Object.exports._errnoException (util.js:1022:11)
at exports._exceptionWithHostPort (util.js:1045:20)
at Server._listen2 (net.js:1259:14)
at listen (net.js:1295:10)
at net.js:1405:9
at GetAddrInfoReqWrap.asyncCallback [as callback] (dns.js:62:16)
at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:81:10)
Address is indeed still in use:
$ lsof -PiTCP -sTCP:LISTEN | grep 8076
node 85382 user 15u IPv4 0xdeadbeef12345 0t0 TCP localhost:8076 (LISTEN)
Curiously, it prints Force quit
when killing the process:
$ kill 85382
Force quit.
(The problem is even more confusing because of #2)
Error: installed gemini is not compatible with GUI
gemini version should be in range >= 0.8.x < 0.13.0
Error: No compatible version
I installed "gemini" and "gemini-gui" step-by-step by https://ru.bem.info/tools/testing/gemini/
Is there ability to rerun tests from gui with changed source?
Case:
Either I do something wrong ?
Hi, it would be great if it'll be possible to run geminu-gui on hosts with ipv6 only. The easisest way to do it just using '::'
as default host — here https://github.com/gemini-testing/gemini-gui/blob/master/lib/cli.js#L14 instead of 'localhost'
.
But may be you have a better solution?
Hello. I`am waiting last modification with fix path.resolve. When new tag will be add?
It would be nice to see it before install.
5:islands-components yeti-or$ gemini-gui
events.js:72
throw er; // Unhandled 'error' event
^
Error: listen EADDRINUSE
at errnoException (net.js:904:11)
at Server._listen2 (net.js:1042:14)
at listen (net.js:1064:10)
at net.js:1146:9
at asyncCallback (dns.js:68:16)
at Object.onanswer [as oncomplete] (dns.js:121:9)
I’m running gemini test
as part of my CI pipeline in order to prevent deploying unwanted visual changes. This works quite well. I also want to use the gemini-gui to make it easy to accept intentional changes. The problem here is that I have to run the tests again in the GUI instead of reusing the existing report made by the CI pipeline.
Ideally there would be even an option to disable running tests via the GUI as this could produce a different result than the test run before that was executed by the CI pipeline (e.g. if new commits have been pushed).
In readme listed --grid-url
option.
But gemini-gui
s code not contains it.
I tried to set blahblah
in this option at gemini-gui
call but result not changed.
Currently gemini-gui is hardcode to bind to the loopback adapter, making it in accessible from a remote machine. Please add an option to bind to a different adapter, e.g. 0.0.0.0
Error: Module did not self-register.
at Error (native)
at Module.load (module.js:355:32)
at Function.Module._load (module.js:310:12)
at Module.require (module.js:365:17)
at require (module.js:384:17)
at Object.<anonymous> (/Users/yeti-or/Projects/islands/islands-components/node_modules/gemini/node_modules/png-img/index.js:6:14)
at Module._compile (module.js:460:26)
at Object.Module._extensions..js (module.js:478:10)
at Module.load (module.js:355:32)
at Function.Module._load (module.js:310:12)
yeti-or-osx:islands-components yeti-or$ node -v
v0.12.0
Хотелось бы чтобы панель с кнопкой «Accept», для текущего просматриваемого теста с картинками, была всегда на виду. Иначе приходится постоянно скроллировать, искать (скроллировать) Diff, потом возвращаться (скроллировать) к кнопке «Accept». Актуально для средних и больших скриншотов.
E.g. show error message about server death
Gemini gui forced me to switch to gemini 4.0 which is not stable yet.
So my testSuite did not work correcly, please switch it back to 3.0
Node v6.4.0, Gemini v4.8.0, Gemini GUI v4.3.2
When I launch the GUI to run all tests, they all pass. I can keep running all tests successfully. When I start running individual tests, some fail and some pass. When I try to run all after an individual failure, the results come back much more quickly and always fail. The command line output also shows an incorrect total.
$ http-server -c-1&
$ phantomjs -w&
$ gemini-gui foo.js
/home/stephen/.node/lib/node_modules
GUI is running at http://localhost:8000
✓ zzz-card 160x144 [phantomjs]
✓ zzz-card 320x240 [phantomjs]
✓ zzz-card 480x320 [phantomjs]
✓ zzz-card 640x480 [phantomjs]
✓ zzz-card 1024x768 [phantomjs]
✓ zzz-photo 160x144 [phantomjs]
✓ zzz-photo 320x240 [phantomjs]
✓ zzz-photo 480x320 [phantomjs]
✓ zzz-photo 640x480 [phantomjs]
✓ zzz-photo 1024x768 [phantomjs]
Total: 10 Passed: 10 Failed: 0 Skipped: 0 Retries: 0
✓ zzz-card 160x144 [phantomjs]
✓ zzz-card 320x240 [phantomjs]
✓ zzz-card 480x320 [phantomjs]
✓ zzz-card 640x480 [phantomjs]
✓ zzz-card 1024x768 [phantomjs]
✓ zzz-photo 160x144 [phantomjs]
✓ zzz-photo 320x240 [phantomjs]
✓ zzz-photo 480x320 [phantomjs]
✓ zzz-photo 640x480 [phantomjs]
✓ zzz-photo 1024x768 [phantomjs]
Total: 10 Passed: 10 Failed: 0 Skipped: 0 Retries: 0
✓ zzz-card 160x144 [phantomjs]
✓ zzz-card 320x240 [phantomjs]
✓ zzz-card 480x320 [phantomjs]
✓ zzz-card 640x480 [phantomjs]
✓ zzz-card 1024x768 [phantomjs]
✓ zzz-photo 160x144 [phantomjs]
✓ zzz-photo 320x240 [phantomjs]
✓ zzz-photo 480x320 [phantomjs]
✓ zzz-photo 640x480 [phantomjs]
✓ zzz-photo 1024x768 [phantomjs]
Total: 10 Passed: 10 Failed: 0 Skipped: 0 Retries: 0
✓ zzz-card 160x144 [phantomjs]
✓ zzz-card 320x240 [phantomjs]
✓ zzz-card 480x320 [phantomjs]
✓ zzz-card 640x480 [phantomjs]
✓ zzz-card 1024x768 [phantomjs]
✓ zzz-photo 160x144 [phantomjs]
✓ zzz-photo 320x240 [phantomjs]
✓ zzz-photo 480x320 [phantomjs]
✓ zzz-photo 640x480 [phantomjs]
✓ zzz-photo 1024x768 [phantomjs]
Total: 10 Passed: 10 Failed: 0 Skipped: 0 Retries: 0
✓ zzz-card 160x144 [phantomjs]
Total: 1 Passed: 1 Failed: 0 Skipped: 0 Retries: 0
✓ zzz-card 160x144 [phantomjs]
✓ zzz-card 320x240 [phantomjs]
✓ zzz-card 480x320 [phantomjs]
✓ zzz-card 640x480 [phantomjs]
✓ zzz-card 1024x768 [phantomjs]
✓ zzz-photo 160x144 [phantomjs]
✓ zzz-photo 320x240 [phantomjs]
✓ zzz-photo 480x320 [phantomjs]
✓ zzz-photo 640x480 [phantomjs]
✓ zzz-photo 1024x768 [phantomjs]
Total: 10 Passed: 10 Failed: 0 Skipped: 0 Retries: 0
✘ zzz-card 320x240 [phantomjs]
Total: 1 Passed: 0 Failed: 1 Skipped: 0 Retries: 0
✓ zzz-card 160x144 [phantomjs]
✓ zzz-card 320x240 [phantomjs]
✓ zzz-card 480x320 [phantomjs]
✓ zzz-card 640x480 [phantomjs]
✓ zzz-card 1024x768 [phantomjs]
✓ zzz-photo 160x144 [phantomjs]
✓ zzz-photo 320x240 [phantomjs]
✓ zzz-photo 480x320 [phantomjs]
✓ zzz-photo 640x480 [phantomjs]
✓ zzz-photo 1024x768 [phantomjs]
Total: 10 Passed: 10 Failed: 0 Skipped: 0 Retries: 0
✘ zzz-card 320x240 [phantomjs]
Total: 1 Passed: 0 Failed: 1 Skipped: 0 Retries: 0
✘ zzz-card 320x240 [phantomjs]
Total: 1 Passed: 0 Failed: 1 Skipped: 0 Retries: 0
✘ zzz-card 320x240 [phantomjs]
Total: 1 Passed: 0 Failed: 1 Skipped: 0 Retries: 0
✘ zzz-card 320x240 [phantomjs]
Total: 1 Passed: 0 Failed: 1 Skipped: 0 Retries: 0
✘ zzz-card 320x240 [phantomjs]
Total: 1 Passed: 0 Failed: 1 Skipped: 0 Retries: 0
✘ zzz-card 320x240 [phantomjs]
Total: 1 Passed: 0 Failed: 1 Skipped: 0 Retries: 0
.gemini.yml
rootUrl: http://localhost:8080
browsers:
phantomjs:
gridUrl: http://localhost:8910
desiredCapabilities:
browserName: phantomjs
foo.js
const phantom = require('phantomjs')
const viewports = [{w: 160, h: 144}, {w: 320, h: 240}, {w: 480, h: 320},
{w: 640, h: 480}]
gemini.suite('zzz-card', function(suite) {
suite
.setUrl('/test/screenshot/fixture/zzz-card.html')
.setCaptureElements('body')
.before(function(actions, find) {
actions.wait(1000)
})
viewports.forEach(function(viewport) {
suite
.capture('zzz-card-' + viewport.w + 'x' + viewport.h, function(actions, find) {
actions.setWindowSize(viewport.w, viewport.h)
})
})
})
gemini-gui
opens system default browser, but it can be not only Chrome
From some version (4.5.0 or maybe some earlier) it doesn't react on pressing "Run" in Firefox (--auto-run
flag doesn't do the thing, too)
No errors appear in browser console (neither in CLI), it just doesn't run the testing process.
So I need to reopen the URL in Chrome manually, and press "Run" there.
I am using Firefox 50 at Windows 10.
(Also, it never worked on Edge for me, from the very beginning; the symptoms are the same)
У меня вопрос - как запустить только один тест. Как только gui открывается в первый раз, кнопа Retry не активна. (Я сделал fork чтобы решить проблему, но может есть как то ещё путь?)
Use Electron for run and create tests
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.