gemini-testing / gemini

💀💀💀[DEPRECATED] Use hermione
https://github.com/gemini-testing/hermione
MIT License
1.5k stars 149 forks source link

Testing in Firefox #891

Open Hrommi opened 6 years ago

Hrommi commented 6 years ago

Output of gemini --version: 5.5.0 ...

Contents of .gemini.js file:

module.exports = {
  rootUrl: 'https://ya.ru/',
  gridUrl: 'http://127.0.0.1:4444/wd/hub',
  browsers: {
    firefox: {
      windowSize: '1400x1024',
      compositeImage: true,
      screenshotMode: 'fullpage',
      desiredCapabilities: {
        // version: '46',
        browserName: 'firefox'
        // marionette: true
      }
    }
  },
  system: {
    plugins: {
      'html-reporter/gemini': {
        enabled: true,
        path: 'gemini-reports',
        defaultView: 'all'
      }
    }
  }
};

Test source code:

gemini.suite('yaTest', (suite) => {
  suite.setUrl('/')
    .setCaptureElements('body')
    .capture('plain');
});

Command used to run the test:

gemini update

Publically accessible URL of the page you are testing against:

https://ya.ru/

Result: Запускается браузер, но страница не загружается и скриншот не создается.

Привет. Как правильно запускать тесты в Firefox? Из #688 я понял что сейчас тесты можно делать только в версии Firefox 46 и ниже. Я установил Firefox 46, но запускаться тесты все равно не стали. Может кто поделиться инструкцией по запуску тестов в Firefox?

sipayRT commented 6 years ago

привет. а ты пробовал ходить по http вместо https? (я про rootUrl)

Hrommi commented 6 years ago

Да, результат такой же. Мне надо для локального сервера browser-sync делать тесты. Сайт яндекса указан просто для примера.

sipayRT commented 6 years ago

а сама ошибка какая? возможно, у тебя не та версия драйвера для ff

Hrommi commented 6 years ago

Вот это появляется в консоли после закрытия браузера:

✘ content-help_card-restrictions plain [firefox]
Cannot launch browser firefox:
[init({"browserName":"firefox"})] The environment you requested was unavailable..
Reason: {"value":{"stacktrace":"org.openqa.selenium.WebDriverException: Process unexpectedly closed with status: 0\nBuild info: version: \u00273.8.1\u0027, revision: \u00276e95a6684b\u0027, time: \u00272017-12-01T19:05:32.194Z\u0027\nSystem info: host: \u0027DESKTOP-6GSSDB5\u0027, ip: \u0027192.168.1.134\u0027, os.name: \u0027Windows 10\u0027, os.arch: \u0027x86\u0027, os.version: \u002710.0\u0027, java.version: \u00271.8.0_161\u0027\nDriver info: driver.version: unknown\nremote stacktrace: stack backtrace:\n   0:           0x47e934 - \u003cno info\u003e\n   1:           0x47f0a3 - \u003cno info\u003e\n   2:           0x442649 - \u003cno info\u003e\n   3:           0x449cc3 - \u003cno info\u003e\n   4:           0x42a890 - \u003cno info\u003e\n   5:           0x406f5e - \u003cno info\u003e\n   6:           0x40cfc9 - \u003cno info\u003e\n   7:           0x6bef19 - \u003cno info\u003e\n   8:           0x420756 - \u003cno info\u003e\n   9:           0x6b96e0 - \u003cno info\u003e\n  10:     0x7ffbc5461fe4 - BaseThreadInitThunk\r\n\tat sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)\r\n\tat sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)\r\n\tat sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)\r\n\tat java.lang.reflect.Constructor.newInstance(Unknown Source)\r\n\tat org.openqa.selenium.remote.W3CHandshakeResponse.lambda$new$0(W3CHandshakeResponse.java:57)\r\n\tat org.openqa.selenium.remote.W3CHandshakeResponse.lambda$getResponseFunction$2(W3CHandshakeResponse.java:104)\r\n\tat org.openqa.selenium.remote.ProtocolHandshake.lambda$createSession$0(ProtocolHandshake.java:123)\r\n\tat java.util.stream.ReferencePipeline$3$1.accept(Unknown Source)\r\n\tat java.util.Spliterators$ArraySpliterator.tryAdvance(Unknown Source)\r\n\tat java.util.stream.ReferencePipeline.forEachWithCancel(Unknown Source)\r\n\tat java.util.stream.AbstractPipeline.copyIntoWithCancel(Unknown Source)\r\n\tat java.util.stream.AbstractPipeline.copyInto(Unknown Source)\r\n\tat java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source)\r\n\tat java.util.stream.FindOps$FindOp.evaluateSequential(Unknown Source)\r\n\tat java.util.stream.AbstractPipeline.evaluate(Unknown Source)\r\n\tat java.util.stream.ReferencePipeline.findFirst(Unknown Source)\r\n\tat org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:126)\r\n\tat org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:73)\r\n\tat org.openqa.selenium.remote.server.ServicedSession$Factory.apply(ServicedSession.java:232)\r\n\tat org.openqa.selenium.remote.server.ActiveSessionFactory.lambda$apply$11(ActiveSessionFactory.java:167)\r\n\tat java.util.stream.ReferencePipeline$3$1.accept(Unknown Source)\r\n\tat java.util.stream.ReferencePipeline$3$1.accept(Unknown Source)\r\n\tat java.util.stream.ReferencePipeline$11$1.accept(Unknown Source)\r\n\tat java.util.stream.ReferencePipeline$2$1.accept(Unknown Source)\r\n\tat java.util.Spliterators$ArraySpliterator.tryAdvance(Unknown Source)\r\n\tat java.util.stream.ReferencePipeline.forEachWithCancel(Unknown Source)\r\n\tat java.util.stream.AbstractPipeline.copyIntoWithCancel(Unknown Source)\r\n\tat java.util.stream.AbstractPipeline.copyInto(Unknown Source)\r\n\tat java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source)\r\n\tat java.util.stream.FindOps$FindOp.evaluateSequential(Unknown Source)\r\n\tat java.util.stream.AbstractPipeline.evaluate(Unknown Source)\r\n\tat java.util.stream.ReferencePipeline.findFirst(Unknown Source)\r\n\tat org.openqa.selenium.remote.server.ActiveSessionFactory.apply(ActiveSessionFactory.java:170)\r\n\tat org.openqa.selenium.remote.server.NewSessionPipeline.lambda$null$1(NewSessionPipeline.java:44)\r\n\tat java.util.stream.ReferencePipeline$3$1.accept(Unknown Source)\r\n\tat java.util.Collections$2.tryAdvance(Unknown Source)\r\n\tat java.util.stream.ReferencePipeline.forEachWithCancel(Unknown Source)\r\n\tat java.util.stream.AbstractPipeline.copyIntoWithCancel(Unknown Source)\r\n\tat java.util.stream.AbstractPipeline.copyInto(Unknown Source)\r\n\tat java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source)\r\n\tat java.util.stream.FindOps$FindOp.evaluateSequential(Unknown Source)\r\n\tat java.util.stream.AbstractPipeline.evaluate(Unknown Source)\r\n\tat java.util.stream.ReferencePipeline.findFirst(Unknown Source)\r\n\tat org.openqa.selenium.remote.server.NewSessionPipeline.lambda$createNewSession$2(NewSessionPipeline.java:47)\r\n\tat java.util.stream.ReferencePipeline$3$1.accept(Unknown Source)\r\n\tat java.util.stream.ReferencePipeline$3$1.accept(Unknown Source)\r\n\tat java.util.stream.ReferencePipeline$3$1.accept(Unknown Source)\r\n\tat java.util.stream.DistinctOps$1$2.accept(Unknown Source)\r\n\tat java.util.stream.ReferencePipeline$2$1.accept(Unknown Source)\r\n\tat java.util.stream.ReferencePipeline$3$1.accept(Unknown Source)\r\n\tat java.util.stream.ReferencePipeline$2$1.accept(Unknown Source)\r\n\tat java.util.stream.Streams$StreamBuilderImpl.tryAdvance(Unknown Source)\r\n\tat java.util.stream.Streams$ConcatSpliterator.tryAdvance(Unknown Source)\r\n\tat java.util.stream.ReferencePipeline.forEachWithCancel(Unknown Source)\r\n\tat java.util.stream.AbstractPipeline.copyIntoWithCancel(Unknown Source)\r\n\tat java.util.stream.AbstractPipeline.copyInto(Unknown Source)\r\n\tat java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source)\r\n\tat java.util.stream.FindOps$FindOp.evaluateSequential(Unknown Source)\r\n\tat java.util.stream.AbstractPipeline.evaluate(Unknown Source)\r\n\tat java.util.stream.ReferencePipeline.findFirst(Unknown Source)\r\n\tat org.openqa.selenium.remote.server.NewSessionPipeline.createNewSession(NewSessionPipeline.java:50)\r\n\tat org.openqa.selenium.remote.server.commandhandler.BeginSession.execute(BeginSession.java:77)\r\n\tat org.openqa.selenium.remote.server.WebDriverServlet.lambda$handle$0(WebDriverServlet.java:240)\r\n\tat java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)\r\n\tat java.util.concurrent.FutureTask.run(Unknown Source)\r\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)\r\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)\r\n\tat java.lang.Thread.run(Unknown Source)\r\n","stackTrace":[{"fileName":null,"methodName":"newInstance0","className":"sun.reflect.NativeConstructorAccessorImpl","lineNumber":-2},{"fileName":null,"methodName":"newInstance","className":"sun.reflect.NativeConstructorAccessorImpl","lineNumber":-1},{"fileName":null,"methodName":"newInstance","className":"sun.reflect.DelegatingConstructorAccessorImpl","lineNumber":-1},{"fileName":null,"methodName":"newInstance","className":"java.lang.reflect.Constructor","lineNumber":-1},{"fileName":"W3CHandshakeResponse.java","methodName":"lambda$new$0","className":"org.openqa.selenium.remote.W3CHandshakeResponse","lineNumber":57},{"fileName":"W3CHandshakeResponse.java","methodName":"lambda$getResponseFunction$2","className":"org.openqa.selenium.remote.W3CHandshakeResponse","lineNumber":104},{"fileName":"ProtocolHandshake.java","methodName":"lambda$createSession$0","className":"org.openqa.selenium.remote.ProtocolHandshake","lineNumber":123},{"fileName":null,"methodName":"accept","className":"java.util.stream.ReferencePipeline$3$1","lineNumber":-1},{"fileName":null,"methodName":"tryAdvance","className":"java.util.Spliterators$ArraySpliterator","lineNumber":-1},{"fileName":null,"methodName":"forEachWithCancel","className":"java.util.stream.ReferencePipeline","lineNumber":-1},{"fileName":null,"methodName":"copyIntoWithCancel","className":"java.util.stream.AbstractPipeline","lineNumber":-1},{"fileName":null,"methodName":"copyInto","className":"java.util.stream.AbstractPipeline","lineNumber":-1},{"fileName":null,"methodName":"wrapAndCopyInto","className":"java.util.stream.AbstractPipeline","lineNumber":-1},{"fileName":null,"methodName":"evaluateSequential","className":"java.util.stream.FindOps$FindOp","lineNumber":-1},{"fileName":null,"methodName":"evaluate","className":"java.util.stream.AbstractPipeline","lineNumber":-1},{"fileName":null,"methodName":"findFirst","className":"java.util.stream.ReferencePipeline","lineNumber":-1},{"fileName":"ProtocolHandshake.java","methodName":"createSession","className":"org.openqa.selenium.remote.ProtocolHandshake","lineNumber":126},{"fileName":"ProtocolHandshake.java","methodName":"createSession","className":"org.openqa.selenium.remote.ProtocolHandshake","lineNumber":73},{"fileName":"ServicedSession.java","methodName":"apply","className":"org.openqa.selenium.remote.server.ServicedSession$Factory","lineNumber":232},{"fileName":"ActiveSessionFactory.java","methodName":"lambda$apply$11","className":"org.openqa.selenium.remote.server.ActiveSessionFactory","lineNumber":167},{"fileName":null,"methodName":"accept","className":"java.util.stream.ReferencePipeline$3$1","lineNumber":-1},{"fileName":null,"methodName":"accept","className":"java.util.stream.ReferencePipeline$3$1","lineNumber":-1},{"fileName":null,"methodName":"accept","className":"java.util.stream.ReferencePipeline$11$1","lineNumber":-1},{"fileName":null,"methodName":"accept","className":"java.util.stream.ReferencePipeline$2$1","lineNumber":-1},{"fileName":null,"methodName":"tryAdvance","className":"java.util.Spliterators$ArraySpliterator","lineNumber":-1},{"fileName":null,"methodName":"forEachWithCancel","className":"java.util.stream.ReferencePipeline","lineNumber":-1},{"fileName":null,"methodName":"copyIntoWithCancel","className":"java.util.stream.AbstractPipeline","lineNumber":-1},{"fileName":null,"methodName":"copyInto","className":"java.util.stream.AbstractPipeline","lineNumber":-1},{"fileName":null,"methodName":"wrapAndCopyInto","className":"java.util.stream.AbstractPipeline","lineNumber":-1},{"fileName":null,"methodName":"evaluateSequential","className":"java.util.stream.FindOps$FindOp","lineNumber":-1},{"fileName":null,"methodName":"evaluate","className":"java.util.stream.AbstractPipeline","lineNumber":-1},{"fileName":null,"methodName":"findFirst","className":"java.util.stream.ReferencePipeline","lineNumber":-1},{"fileName":"ActiveSessionFactory.java","methodName":"apply","className":"org.openqa.selenium.remote.server.ActiveSessionFactory","lineNumber":170},{"fileName":"NewSessionPipeline.java","methodName":"lambda$null$1","className":"org.openqa.selenium.remote.server.NewSessionPipeline","lineNumber":44},{"fileName":null,"methodName":"accept","className":"java.util.stream.ReferencePipeline$3$1","lineNumber":-1},{"fileName":null,"methodName":"tryAdvance","className":"java.util.Collections$2","lineNumber":-1},{"fileName":null,"methodName":"forEachWithCancel","className":"java.util.stream.ReferencePipeline","lineNumber":-1},{"fileName":null,"methodName":"copyIntoWithCancel","className":"java.util.stream.AbstractPipeline","lineNumber":-1},{"fileName":null,"methodName":"copyInto","className":"java.util.stream.AbstractPipeline","lineNumber":-1},{"fileName":null,"methodName":"wrapAndCopyInto","className":"java.util.stream.AbstractPipeline","lineNumber":-1},{"fileName":null,"methodName":"evaluateSequential","className":"java.util.stream.FindOps$FindOp","lineNumber":-1},{"fileName":null,"methodName":"evaluate","className":"java.util.stream.AbstractPipeline","lineNumber":-1},{"fileName":null,"methodName":"findFirst","className":"java.util.stream.ReferencePipeline","lineNumber":-1},{"fileName":"NewSessionPipeline.java","methodName":"lambda$createNewSession$2","className":"org.openqa.selenium.remote.server.NewSessionPipeline","lineNumber":47},{"fileName":null,"methodName":"accept","className":"java.util.stream.ReferencePipeline$3$1","lineNumber":-1},{"fileName":null,"methodName":"accept","className":"java.util.stream.ReferencePipeline$3$1","lineNumber":-1},{"fileName":null,"methodName":"accept","className":"java.util.stream.ReferencePipeline$3$1","lineNumber":-1},{"fileName":null,"methodName":"accept","className":"java.util.stream.DistinctOps$1$2","lineNumber":-1},{"fileName":null,"methodName":"accept","className":"java.util.stream.ReferencePipeline$2$1","lineNumber":-1},{"fileName":null,"methodName":"accept","className":"java.util.stream.ReferencePipeline$3$1","lineNumber":-1},{"fileName":null,"methodName":"accept","className":"java.util.stream.ReferencePipeline$2$1","lineNumber":-1},{"fileName":null,"methodName":"tryAdvance","className":"java.util.stream.Streams$StreamBuilderImpl","lineNumber":-1},{"fileName":null,"methodName":"tryAdvance","className":"java.util.stream.Streams$ConcatSpliterator","lineNumber":-1},{"fileName":null,"methodName":"forEachWithCancel","className":"java.util.stream.ReferencePipeline","lineNumber":-1},{"fileName":null,"methodName":"copyIntoWithCancel","className":"java.util.stream.AbstractPipeline","lineNumber":-1},{"fileName":null,"methodName":"copyInto","className":"java.util.stream.AbstractPipeline","lineNumber":-1},{"fileName":null,"methodName":"wrapAndCopyInto","className":"java.util.stream.AbstractPipeline","lineNumber":-1},{"fileName":null,"methodName":"evaluateSequential","className":"java.util.stream.FindOps$FindOp","lineNumber":-1},{"fileName":null,"methodName":"evaluate","className":"java.util.stream.AbstractPipeline","lineNumber":-1},{"fileName":null,"methodName":"findFirst","className":"java.util.stream.ReferencePipeline","lineNumber":-1},{"fileName":"NewSessionPipeline.java","methodName":"createNewSession","className":"org.openqa.selenium.remote.server.NewSessionPipeline","lineNumber":50},{"fileName":"BeginSession.java","methodName":"execute","className":"org.openqa.selenium.remote.server.commandhandler.BeginSession","lineNumber":77},{"fileName":"WebDriverServlet.java","methodName":"lambda$handle$0","className":"org.openqa.selenium.remote.server.WebDriverServlet","lineNumber":240},{"fileName":null,"methodName":"call","className":"java.util.concurrent.Executors$RunnableAdapter","lineNumber":-1},{"fileName":null,"methodName":"run","className":"java.util.concurrent.FutureTask","lineNumber":-1},{"fileName":null,"methodName":"runWorker","className":"java.util.concurrent.ThreadPoolExecutor","lineNumber":-1},{"fileName":null,"methodName":"run","className":"java.util.concurrent.ThreadPoolExecutor$Worker","lineNumber":-1},{"fileName":null,"methodName":"run","className":"java.lang.Thread","lineNumber":-1}],"message":"Process unexpectedly closed with status: 0\nBuild info: version: \u00273.8.1\u0027, revision: \u00276e95a6684b\u0027, time: \u00272017-12-01T19:05:32.194Z\u0027\nSystem info: host: \u0027DESKTOP-6GSSDB5\u0027, ip: \u0027192.168.1.134\u0027, os.name: \u0027Windows 10\u0027, os.arch: \u0027x86\u0027, os.version: \u002710.0\u0027, java.version: \u00271.8.0_161\u0027\nDriver info: driver.version: unknown\nremote stacktrace: stack backtrace:\n   0:           0x47e934 - \u003cno info\u003e\n   1:           0x47f0a3 - \u003cno info\u003e\n   2:           0x442649 - \u003cno info\u003e\n   3:
        0x449cc3 - \u003cno info\u003e\n   4:           0x42a890 - \u003cno info\u003e\n   5:           0x406f5e - \u003cno info\u003e\n   6:           0x40cfc9 - \u003cno info\u003e\n   7:           0x6bef19 - \u003cno info\u003e\n
 8:           0x420756 - \u003cno info\u003e\n   9:           0x6b96e0 - \u003cno info\u003e\n  10:     0x7ffbc5461fe4 - BaseThreadInitThunk","error":"unknown error"},"status":13}
Total: 1 Passed: 0 Failed: 1 Skipped: 0 Retries: 0

Версия драйвера ff 0.19.1.

sipayRT commented 6 years ago

попробуй более старую версию драйвера

Hrommi commented 6 years ago

Начиная с версии geckodriver 0.15.0 и ниже появляется другая ошибка:

Cannot launch browser firefox:
Not a PNG.

А вот что выдает selenium-standalone с версией 0.19.1 при запуске теста:

2018-03-28 12:20:46.468:INFO:osjs.Server:main: jetty-9.4.7.v20170914
2018-03-28 12:20:46.511:WARN:osjs.SecurityHandler:main: ServletContext@o.s.j.s.ServletContextHandler@646db9{/,null,STARTING} has uncovered http methods for path: /
2018-03-28 12:20:46.516:INFO:osjsh.ContextHandler:main: Started o.s.j.s.ServletContextHandler@646db9{/,null,AVAILABLE}
2018-03-28 12:20:46.636:INFO:osjs.AbstractConnector:main: Started ServerConnector@18298f{HTTP/1.1,[http/1.1]}{0.0.0.0:4444}
2018-03-28 12:20:46.637:INFO:osjs.Server:main: Started @811ms
12:20:46.637 INFO - Selenium Server is up and running
2018-03-28 12:20:46.984:INFO:osjshC.ROOT:qtp23649981-12: org.openqa.selenium.remote.server.WebDriverServlet-729b1e: Initialising WebDriverServlet
12:20:47.045 INFO - Found handler: org.openqa.selenium.remote.server.commandhandler.Status@1e5afe5
12:20:47.051 INFO - /status: Executing GET on /status (handler: Status)
Selenium started
12:21:04.872 INFO - Found handler: org.openqa.selenium.remote.server.commandhandler.BeginSession@844508
12:21:04.873 INFO - /session: Executing POST on /session (handler: BeginSession)
12:21:04.940 INFO - Capabilities are: Capabilities {browserName: firefox, javascriptEnabled: true, version: }
12:21:04.944 INFO - Capabilities {browserName: firefox, javascriptEnabled: true, version: } matched class org.openqa.selenium.remote.server.ServicedSession$Factory (provider: org.openqa.selenium.firefox.GeckoDriverService)
1522228865224   geckodriver     INFO    geckodriver 0.19.1
1522228865236   geckodriver     INFO    Listening on 127.0.0.1:25499
1522228866028   mozrunner::runner       INFO    Running command: "C:\\Program Files\\Mozilla Firefox\\firefox.exe" "-marionette" "-profile" "C:\\Users\\user\\AppData\\Local\\Temp\\rust_mozprofile.x5u4PyYqFZYZ"
1522228868103   Marionette      INFO    Listening on port 2828
Kenith commented 6 years ago

I have build a docker image which support firefox 47.0.1, you could have a try here: https://github.com/Kenith/ta-visual-lib, and you could also get the samples.

Hope could be the help