Giter Club home page Giter Club logo

testplane's Introduction

Testplane

Fast, scalable and robust testing solution for the ever-evolving web landscape.

Total Downloads Latest Release License


Testplane (ex-Hermione) is a battle-hardened framework for testing web apps at any scale, any browser and any platform.

πŸ§‘β€πŸ’» Developer Friendly: Enjoy a hassle-free start with our installation wizard, TypeScript support, instant feedback via live test editing, advanced HTML-reporter, and smart features like auto-wait and retries.

πŸ“Έ Visual Testing Redefined: Capture anything from specific details to whole pages, manage diffs with a streamlined UI, explore a variety of diff modes and let Testplane tackle flakiness.

🌐 Test Across Environments: Forget being tied to a couple of latest Chrome builds. Testplane goes beyond that, offering testing on real devices and broad automation protocol support, mirroring your users' actual environments.

πŸ“ˆ Scale Effortlessly: Run thousands of tests on a remote browser grid or benefit from ultra-fast local execution. Testplane offers sharding, parallel test execution, and isolated browser contexts.

⚑ Infinite Extensibility: Testplane offers a versatile plugin system with dozens of open-source plugins on GitHub, along with custom reporters, commands, and execution logic.

Getting started

Note: if you prefer manual installation, you can run npm i -D testplane. Check out the Docs for details.

  1. Use the CLI wizard to set up testplane and generate basic configuration:

    npm init testplane@latest new-testplane-project

    You may add -- --verbose argument to launch a tool in extra-questions mode, to pick custom package manager or install extra plugins.

  2. Open the newly generated file testplane-tests/example.testplane.ts. We’ll modify the test to ensure the description includes expected text:

    describe("test", () => {
        it("example", async ({browser}) => {
            await browser.url("https://example.com/");
    
            const description = await browser.$("p");
    
            expect(description).toHaveTextContaining("for use in illustrative examples in documents");
        });
    });
  3. Launch GUI:

    npx testplane gui
  4. Try running the test and watch it pass. Now, let's replace description text check with a visual assertion. Use the assertView command to carry out visual checks:

    - expect(description).toHaveTextContaining("for use in illustrative examples in documents");
    + await description.assertView("description"); // "description" is just a name of the assertion
  5. Run the test again. It will fail, because a reference image for the heading is missing. You can accept the diff and re-run the test, it will then pass.

Congratulations on writing your first Testplane test, which navigates to a page and executes a visual assertion. Dive into the Docs to discover more awesome features Testplane has to offer!

Docs

The documentation is divided into several sections:

Rename from "Hermione"

This project was formerly known as "Hermione", but eventually some copyright and trademark issues surfaced, leading to the decision to rebrand. After some discussion, we settled on "Testplane" as the official new title. Considering this change as merely a rebranding, we've proceeded with the existing version count instead of starting anew. Thus, Testplane v8.x is a drop-in replacement for Hermione v8.x.

Learn more about migration from Hermione to Testplane in the Docs.

Contributing

Our mission with this repository is to make the Testplane development process open, while continuing to improve upon its features, performance and ease of use. We hope other organizations find value in our project and benefit from our work.

We welcome and appreciate community contributions. To ensure our efforts are in sync, we recommend to raise an issue or leave a comment beforehand.

Visit our contributing guide to understand more about our development process and how to get involved.

License

Testplane is MIT licensed.

testplane's People

Contributors

andre487 avatar belyanskii avatar c1825846 avatar catwithapple avatar dmitriy-kiselyov avatar dudagod avatar egavr avatar epszaw avatar fosemberg avatar j0tunn avatar kolesnikovde avatar kuznetsovroman avatar kvmamich avatar leonsabr avatar levonet avatar mb1te avatar mcheshkov avatar miripiruni avatar nestrik avatar oldskytree avatar robot-tap avatar rostik404 avatar ruslanxdev avatar sbmaxx avatar shadowusr avatar sipayrt avatar swinx avatar tarmolov avatar tormozz48 avatar xrsd avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

testplane's Issues

How i can switch between windows?

Can hermione switch between browser windows ?

I've code like this, but hermione doesn't know about switchWindow method...
webdriver API contains method: https://webdriver.io/docs/api/browser/switchWindow.html

describe('test_switch_window', function (browser) {

    it('test_switch_window', function () {

        return this.browser

            .url('https://my_intresting_site.com/')

            .$("button").click() // it opens new tab

            .switchWindow("new tab's title") // output .switchWindow is not a function ;(
    });

});

ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° typescript

БСйчас Ρƒ hermione Π½Π΅Ρ‚ Ρ‚Π°ΠΉΠΏΠΈΠ½Π³ΠΎΠ² - использованиС с тайпскриптом Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π·Π°Ρ‚Ρ€ΡƒΠ΄Π½Π΅Π½ΠΎ.
Как w/a ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΉΠΏΠΈΠ½Π³ΠΈ ΠΎΡ‚ webdriver.io, Π½ΠΎ это Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±Π½ΠΎ.
Π₯ΠΎΡ‚Π΅Π»ΠΎΡΡŒ Π±Ρ‹ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ‚Π°ΠΉΠΏΠΈΠ½Π³ΠΈ Π±Ρ‹Π»ΠΈ ΠΈΠ· ΠΊΠΎΡ€ΠΎΠ±ΠΊΠΈ.

this.test is 'undefined'

Hi guys!
After updating hermione (from v.0.56.2 to v.1.2.1)I faced the problem that this.test in my tests is undefined. this.currentTest in beforeEach hooks works fine.
So many of my tests broke.
Can you help, please?

Random crush

Sometime random browser test is crushed:
βœ“ mocha no_failures [internet_explorer:c728732d-efd0-4c5a-ab36-5839c8fd0693] - 3618ms
✘ mocha no_failures [chrome:65481dee14146e30c9d85fc6fc94df0c] - 1870ms
βœ“ mocha no_failures [firefox:82fd7059-e951-4d99-a749-b9fd36809f80] - 5771ms

It may be ie/chrome/firefox, if i restart test it will work again

Hermione config is

module.exports = {
    sets: {
        desktop: {
            files: 'hermione_tests'
        }
    },

    browsers: {
        chrome: {
            desiredCapabilities: {
                browserName: 'chrome'
            }
        }
        ,
        firefox: {
            desiredCapabilities: {
                browserName: 'firefox'
            }
        }
        ,
        internet_explorer: {
            desiredCapabilities: {
                browserName: 'internet explorer'
            }
        }
    },
    gridUrl: "http://192.168.8.22:4444/wd/hub"
};

i have only one test - check mocha tests result on terminal

var assert = require('chai').assert;
describe('mocha', function() {
    it('no_failures', function() {
        return this.browser
            .url('http://192.168.8.21:5000/tests')
            .getText('.failures')
            .then(function(title) {
                assert.equal(title, 'failures: 0')
            });
    });
});

Autosave screenshots when test fails

When tests are run in selenium grid and some of the tests fail, it won't be clear in some cases what's wrong with them. For example, chrome passes all tests but opera doesn't.

For debugging issues I usually run the specific browser locally. However, to run browsers like IE on my mac, I have to run VM. So I save screenshot for these browsers. It's working approach but saveScreenshot command should be inserted manually in the code and it's annoying.

It'd be great if hermione has an option to turn such behavior on.

Missing 2.33-x64-chromedriver

I've installed hermione and selenium after start command test the error is appeared

Error: Missing C:\repository\html_qoob\node_modules\selenium-standalone\.selenium\chromedriver\2.33-x64-chromedriver
[1]     at C:\repository\html_qoob\node_modules\selenium-standalone\lib\check-paths-existence.js:15:20
[1]     at FSReqWrap.cb [as oncomplete] (fs.js:313:19)
[1] selenium-standalone start exited with code 1

Could somebody help me to resolve this issue?

My .hermione.config.js

module.exports = {
	gridUrl: 'http://localhost:4444/wd/hub',
    sets: {
        desktop: {
            files: 'tests/desktop'
        }
    },
    browsers: {
        chrome: {
            desiredCapabilities: {
                browserName: 'chrome',
            }
        }
    }
};

My packege.json

"scripts": {
        "test": "hermione",
        "start": "concurrently \"node server.js\" \"selenium-standalone start\""
},
 "devDependencies": {
        "chromedriver": "^2.33.2",
        "concurrently": "^3.5.0",
        "grunt": "^0.4.5",
        "grunt-cli": "^1.2.0",
        "grunt-contrib-clean": "^1.0.0",
        "grunt-contrib-compress": "^1.3.0",
        "hermione": "^0.50.3",
        "load-grunt-tasks": "^3.5.0",
        "selenium-standalone": "^6.11.0"
    }

НСт Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ 'beforeAll' ΠΈ 'afterAll'

Π”ΠΎΠ±Ρ€Ρ‹ΠΉ дСнь! Бтолкнулся со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ, трСбуСтся провСсти Ρ‡Π°ΡΡ‚ΡŒ ΠΏΡ€Π΅ΠΊΠΎΠ½Π΄ΠΈΡˆΠ΅Π½ΠΎΠ² Π½Π΅ ΠΏΠ΅Ρ€Π΅Π΄ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ тСстом, Π° ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· Π² Π½Π°Ρ‡Π°Π»Π΅ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΎΠ΄Π½ΠΎΠ³ΠΎ describe. Π’ ReadME Π½Π° этот счСт Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ сказано, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ beforeEach ΠΈ afterEach прСдставлСны. НС ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ Π’Ρ‹ ΠΏΠΎΠ΄ΡΠΊΠ°Π·Π°Ρ‚ΡŒ (с ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ) ΠΊΠ°ΠΊ это ΠΎΠ±ΠΎΠΉΡ‚ΠΈ ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΠ»Π°Π³ΠΈΠ½, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π±Ρ‹ пСрСдавался инстанс Π²Π΅Π±Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π°?

НСвСрныС ΠΏΡƒΡ‚ΠΈ ΠΊ ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚Π°ΠΌ Π² html-ΠΎΡ‚Ρ‡Π΅Ρ‚Π΅

ЗдравствуйтС.
Поднимая Π“Π΅Ρ€ΠΌΠΈΠΎΠ½Ρƒ Π½Π° windows столкнулся с ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ. Π’ ΠΎΡ‚Ρ‡Π΅Ρ‚Π΅ всС слСши Π² путях Π·Π°ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Π½Π° %5C.
https://yadi.sk/i/6m9dUtYbao7eGQ

Если Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΈΡ… Π½Π° / Ρ‚ΠΎ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ
https://yadi.sk/i/Say1o9Uan0FFbQ

Π—Π°Π°Ρ€Ρ…ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Π» вСсь ΠΊΠΎΠ½Ρ„ΠΈΠ³ Π² Π°Ρ€Ρ…ΠΈΠ²:
https://yadi.sk/d/mMcBAGRb_8K77Q

How to set up WebdriverIO config?

When I run test, I see a lot of warnings like:

(You can disable this warning by setting "deprecationWarnings": false in your WebdriverIO config)
WARNING: the "doDoubleClick" command will be deprecated soon. If you have further questions, reach out in the WebdriverIO Gitter support channel (https://gitter.im/webdriverio/webdriverio).
Note: This command is not part of the W3C WebDriver spec and won't be supported in future versions of the driver. It is recommended to just call the click command on the same element twice in the row.

I tried to create file wdio.conf.js with

module.exports = {
  deprecationWarnings: false
}

But is does not work.

hermione verion - 0.62.0

Outdated version in central NPM repository

Hi, I noticed that the latest version which can be installed with npm i hermione is 0.20.0

Of course it is possible to use latest one just by fetching sources from github, but it's nice to sync releases with central NPM repository. At the moment if someone will follow quick start guide on github it wouldn't work because of difference between versions.

Вопрос ΠΏΡ€ΠΎ PAGE OBJECT ΠΈ ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· console Π² Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½ΠΎΠΌ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅

Вопросы:

  1. Π― ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ понимаю: Ρ‡Ρ‚ΠΎ PAGE OBJECT PATTERN Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ с hermione
    Π’ΠΎ Π΅ΡΡ‚ΡŒ ΠΊΠ°ΠΊ это описано Ρƒ webdriverIO http://webdriver.io/guide/testrunner/pageobjects.html
    Π’Π°ΠΊ ΠΆΠ΅ создаю классы, Ρ€Π°ΡΠΏΠΈΡΡ‹Π²Π°ΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ дальшС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ ΠΈΡ… ?
  2. Π― ΠΏΡ€ΠΎΠ²ΠΎΠΆΡƒ тСст Π³Π΄Π΅ я сначала ΠΏΠΎΠ΄ΠΏΠΈΡΡ‹Π²Π°ΡŽΡΡŒ Π½Π° события window.App.EventEmitter, Π΄Π°Π»Π΅Π΅ заполняю поля Ρ„ΠΎΡ€ΠΌΡ‹ ΠΈ кликаю Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ для шага Π²ΠΏΠ΅Ρ€Π΅Π΄. Π’ console Π² Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½ΠΎΠΌ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅ Ρƒ мСня эти Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎΠΏΠ°Π΄Π°ΡŽΡ‚ ΠΈ я ΠΌΠΎΠ³Ρƒ ΠΈΡ… ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ. Π’Ρ‹ Π½Π΅ подскаТитС ΠΊΠ°ΠΊ ΠΌΠ½Π΅ эти Π΄Π°Π½Π½Ρ‹Π΅ Π΄ΠΎΡΡ‚Π°Ρ‚ΡŒ(ΠΏΡ€ΠΎΠ±Ρ€ΠΎΡΠΈΡ‚ΡŒ Π² сам тСст) ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΡ… ΡƒΠΆΠ΅ Π² консолС ΠΌΠΎΠ΅ΠΉ IDE , Π»ΠΈΠ±ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ assert Π½Π° Π½ΠΈΡ…, Π½Ρƒ Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Ρ‡Ρ‚ΠΎ я ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽ Ρ‚Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Ρ‡Ρ‚ΠΎ ΠΈ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π» ΠΏΡ€ΠΈ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ. Π’ΠΎ Π΅ΡΡ‚ΡŒ, Ссли ΠΎΠ½ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°Π²Π½Ρ‹, Ρ‚ΠΎ тСст ΠΏΡ€ΠΎΡˆΠ΅Π», Π½Π΅Ρ‚ - Ρ‚ΠΎ ΠΏΡ€ΠΎΠ²Π°Π».
    ΠŸΡ€ΠΎΡΡ‚ΠΈΡ‚Π΅ Ссли Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΏΠΎΠ΄Π°Π» ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ. Если Π½ΡƒΠΆΠ½ΠΎ Ρ‚ΠΎ ΠΌΠΎΠ³Ρƒ ΠΏΡ€ΠΈΡΠ»Π°Ρ‚ΡŒ свой нСбольшой ΠΊΠΎΠ΄ тСста, для понимания.
    Бпасибо.

Scrollable div support

Π”ΠΎΠ±Ρ€Ρ‹ΠΉ дСнь!
Бтолкнулся со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ. Π’ вСрсткС имССтся div, с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ ΡΠΊΡ€ΠΎΠ»Π»ΠΈΡ‚ΡŒ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π½Π΅Π³ΠΎ. НСобходимо ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚ всСго Π΄ΠΈΠ²Π°, Π½Π΅ открывая Π΅Π³ΠΎ Π² Π½ΠΎΠ²ΠΎΠΉ html. Π‘ΠΊΠ°ΠΆΠΈΡ‚Π΅, ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ ΠΊΠ°ΠΊ Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π² Π½Π΅Π³ΠΎ контСкст? ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ° Π·Π°ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚ΠΈΡ‚ΡŒ ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚ΠΈΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠΊΠ½ΠΎ ΠΈΠ»ΠΈ Ρ‡Ρ‚ΠΎ Ρ‚ΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π½Π΅Π³ΠΎ.
Π’ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΉ workaround: ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π½Π° body - height='100%` Π½Π° height='auto'. Но Ссли Π΅ΡΡ‚ΡŒ способ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это Π±Π΅Π· измСнСния css, Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Ссли Π±Ρ‹ Π’Ρ‹ подСлились. :)

Error: Cannot read property '0' of undefined β€” test-collection.js

If you give a non-existing browserId to sortTests it retrun error:

TypeError: Cannot read property '0' of undefined
    at TestCollection.getRootSuite (/Users/ruslankhh/work/web4-1/node_modules/hermione/lib/test-collection.js:19:52)
    at _.forEach (/Users/ruslankhh/work/web4-1/node_modules/hermione/lib/test-collection.js:25:31)
    at /Users/ruslankhh/work/web4-1/node_modules/lodash/lodash.js:4944:15
    at baseForOwn (/Users/ruslankhh/work/web4-1/node_modules/lodash/lodash.js:3001:24)
    at /Users/ruslankhh/work/web4-1/node_modules/lodash/lodash.js:4913:18
    at Function.forEach (/Users/ruslankhh/work/web4-1/node_modules/lodash/lodash.js:9359:14)
    at TestCollection.eachRootSuite (/Users/ruslankhh/work/web4-1/node_modules/hermione/lib/test-collection.js:24:11)
    at Hermione.hermione.on (/Users/ruslankhh/work/web4-1/node_modules/@yandex-int/templar-runner/hermione.js:84:24)
    at emitOne (events.js:121:20)
    at Hermione.emit (events.js:211:7)
    at Hermione.readTests (/Users/ruslankhh/work/web4-1/node_modules/hermione/lib/hermione.js:75:18)
    at <anonymous>

Вопросы ΠΏΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ΅ hermione

Π― Π½Π΅ знаю ΠΊΡƒΠ΄Π° Π²Π°ΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π΅Ρ‰Π΅ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΡƒΡΠ»Ρ‹ΡˆΠ°Π½Π½Ρ‹ΠΌ, проститС Ссли это Π½Π΅ Ρ‚ΠΎ мСсто. Π‘ΠΊΠ°ΠΆΠΈΡ‚Π΅ ΠΈ я ΡƒΠ΄Π°Π»ΡŽ этот запрос. К соТалСнию gitter я Π½Π΅ нашСл посвящСнный hermione, Π½Π° youtube ΠΊΠ°Π½Π°Π»Π΅ ΠΏΠΎΠΊΠ° Π½Π΅Ρ‚ ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ².

  1. Π£ вас Π΅ΡΡ‚ΡŒ Π² ΠΏΠ»Π°Π½Π°Ρ… провСсти курс Π»Π΅ΠΊΡ†ΠΈΠΉ(Π²Π²ΠΎΠ΄Π½Ρ‹ΠΉ курс ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹ΠΉ) ΠΏΠΎ hermione для Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΎΠ²/ΠΎΠΏΡ‹Ρ‚Π½Ρ‹Ρ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ²?
  2. Π±ΡƒΠ΄Π΅Ρ‚ Π»ΠΈ создан Ρ‡Π°Ρ‚, ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‚ΠΎΡ‚ ΠΆΠ΅ gitter ΠΈΠ»ΠΈ slack(Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π°Π½Π°Π»ΠΎΠ³ΠΈ) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, Π³Π΄Π΅ всС смогут ΠΎΠ±Ρ‰Π°Ρ‚ΡŒΡΡ ΠΈ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ вопросы ΠΈ дСлится своими ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ ΠΊΠΎΠ΄Π°.

Screenshooter

Hello, guys! Thanks for doing a great job with hermione.
We started using hermione for functional tests in our project and are curious if you have any plans to integrate a screen shooter into hermione?

Upd: by screen shooter I mean a tool for screen comparison if that make sense :)

Skip doesn't work for before and after hooks

Hello,

hermione.skip feature doesn't work for Mocha's hooks.

I have a specific test suite, where I cook some preconditions, do tests, skip a step in a specific browser and want to skip postconditions for that specific browser:

describe('My test suite', function() {

    before(function () {
        return this.browser
            .foo_bar_preconditions;
    });

    after(function () {
        return this.browser
            .foo_bar_postconditions;
    });

    it('First test case', function() {
        return this.browser
            .foo_bar_1st_test_case;
    });

    hermione.skip.in('ie11', 'Because it is IE');
    it('Second test case', function() {
        return this.browser
            .foo_bar_2st_test_case;
    });

});

At the end of the test I want to skip after hook for IE, but if I put hermione.skip.in before after hook, skip.in feature will apply to the first it. It would be great if skipping could work for before and after hooks.

Tests fail on firefox

Have strange, unstable error in tests

functionalTests git:(NSDAT-10398) βœ— hermione
http://localhost/portal/login.html
✘ Test location Test impossible to navigate to Portal employee with an empty location [firefox:3e8f1d38-2628-49f3-b13d-8a75544b6b79] - 7524ms
Total: 1 Passed: 0 Failed: 1 Skipped: 0 Retries: 0

  1. Test location Test impossible to navigate to Portal employee with an empty location
    in file EmployeeWithEmptyLocation.js

    firefox
    ✘ ClientBridgeError: Unable to inject gemini-core client script
    at execute("return typeof __geminiCore !== "undefined"? __geminiCore.resetZoom() : {error: "ERRNOFUNC"}") - existing-browser.js:144:30

TEST
it('Test impossible to navigate to Portal employee with an empty location', function () {
var browser = func.login(this.browser, consts.emptyLocation);
browser = func.assertUrl(browser, consts.loginUrl);
browser = func.goToUrl(browser, 'http://localhost/portal/serviceCalls.html?direction=all');
return func.assertUrl(browser, consts.loginUrl);
});

function login(browser, loginPassword) {
return browser
// .pause(1000)
.url(consts.baseUrl)
.waitForVisible(consts.xpathLoginInput, consts.waitDownload)
.setValue(consts.xpathLoginInput, loginPassword)
.setValue(consts.xpathPasswordInput, loginPassword)
.click(consts.xpathButtonSubmitLogin)
.pause(1000);
};

function assertUrl(browser, expectedUrl) {
return browser
.getUrl()
.then((url) => {
console.log(url);
assert.equal(url, expectedUrl);
});
};

function goToUrl(browser, url) {
return browser
.url(url)
.pause(2000);
};

hermione ΡˆΠ°Ρ€ΠΈΡ‚ ΠΎΠ±ΡŒΠ΅ΠΊΡ‚ browser ΠΌΠ΅ΠΆΠ΄Ρƒ нСсколькими сСссиями

Если:
Π—Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ тСсты Π² N сСссиях Π² headless Ρ€Π΅ΠΆΠΈΠΌΠ΅
ΠΈ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π² beforeEach this.browser Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ browser
Ρ‚ΠΎ hermione ΡˆΠ°Ρ€ΠΈΡ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ browser Π² ΠΏΠ΅Ρ€Π²Ρ‹Ρ… N сСссиях.

ВоспроизвСдСниС: https://github.com/vrozaev/hermione-0.90.2-bug-reproduce

(Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ условиС ΠΏΡ€ΠΎ headless Ρ€Π΅ΠΆΠΈΠΌ лишнСС, Π½ΠΎ с Π½ΠΈΠΌ воспроизводится ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎ. Π’Π°ΠΊΠΆΠ΅ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ воспроизводится с ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΌ selenium grid)

Inline svg Π½Π΅ ΡƒΡΠΏΠ΅Π²Π°ΡŽΡ‚ ΠΏΡ€ΠΎΠ³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒΡΡ

ΠŸΠΎΡ…ΠΎΠΆΠ΅, Ρ‡Ρ‚ΠΎ Π³Π΅Ρ€ΠΌΠΈΠΎΠ½Π° Π½Π΅ доТидаСтся отобраТСния отрисовки вставлСнных Π² html svg-элСмСнтов.

image image

Π’ΠΎΡ‡Π½ΠΎ Π½Π΅ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΎΠ±Ρ‰Π΅Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅?

страница ΠΎΡ‚Ρ‡Π΅Ρ‚Π° ΠΏΠ°Π΄Π°Π΅Ρ‚, Ссли Π² meta Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚

hr
Бсылка Π² консоли:
https://reactjs.org/docs/error-decoder.html/?invariant=31&args[]=object%20with%20keys%20%7Blogin%2C%20password%7D&args[]=

Π’ .hermione.conf.js:

meta: {
    user: {
        login: 'testLogin',
        password: 'testpassword'
    }
}

Если всС тСсты Π·Π΅Π»Ρ‘Π½Ρ‹Π΅ β€” страница ΠΎΡ‚Ρ‡Ρ‘Ρ‚Π° формируСтся Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ. Если Π΅ΡΡ‚ΡŒ ΡƒΠΏΠ°Π²ΡˆΠΈΠ΅ тСсты β€” вмСсто страницы ΠΎΡ‚Ρ‡Ρ‘Ρ‚Π° Π±Π΅Π»Ρ‹ΠΉ лист (с assertView Ρ‚ΠΎΡ‡Π½ΠΎ воспроизводится).

На страницС hermione gui Ρ‚Π°ΠΊΠΆΠ΅ воспроизводится.

ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ» ΠΊΠΎΠ½Ρ„ΠΈΠ³, всё Π·Π°Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΎ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ:

meta: {
    userLogin: 'testLogin',
    userPassword: 'testpassword'
}

Error on installing the package

>npm install -g hermione
npm ERR! code ENOPACKAGEJSON
npm ERR! package.json Non-registry package missing package.json: webdriverio@github:gemini-testing/webdriverio#master.
npm ERR! package.json npm can't find a package.json file in your current directory.
>node -v
v9.4.0
>npm -v
5.6.0

Windows 10 64bit
2018-01-30T12_49_51_333Z-debug.log

Missing steps in quickstart: where to put code example and Cannot find module 'chai'

I'ma trying to follow Quick Start (https://github.com/gemini-testing/hermione/blob/master/README.md#quick-start)

  1. staisfied prerequisites (installed selenium)
  2. installed hermione globally
  3. put .hermione.conf.js in the project root
  4. wrote first test: problem 1: not clear where to write that code example? Just guessed in 'tests/desktop', but better to put additional instructions about filename and place
  5. run hermione: problem 2: got an error Error: Cannot find module 'chai'

`yarn audit` Ρ€Π΅ΠΏΠΎΡ€Ρ‚ΠΈΡ‚ мноТСство уязвимостСй послС установки `hermione`

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ critical      β”‚ Command Injection                                            β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Package       β”‚ growl                                                        β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Patched in    β”‚ >=1.10.2                                                     β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Dependency of β”‚ hermione                                                     β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Path          β”‚ hermione > mocha > growl                                     β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ More info     β”‚ https://nodesecurity.io/advisories/146                       β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ high          β”‚ Regular Expression Denial of Service                         β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Package       β”‚ minimatch                                                    β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Patched in    β”‚ >=3.0.2                                                      β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Dependency of β”‚ hermione                                                     β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Path          β”‚ hermione > mocha > glob > minimatch                          β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ More info     β”‚ https://nodesecurity.io/advisories/118                       β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ low           β”‚ Prototype Pollution                                          β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Package       β”‚ lodash                                                       β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Patched in    β”‚ >=4.17.5                                                     β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Dependency of β”‚ hermione                                                     β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Path          β”‚ hermione > q-promise-utils > lodash                          β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ More info     β”‚ https://nodesecurity.io/advisories/577                       β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ low           β”‚ Regular Expression Denial of Service                         β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Package       β”‚ debug                                                        β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Patched in    β”‚ >= 2.6.9 < 3.0.0 || >= 3.1.0                                 β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Dependency of β”‚ hermione                                                     β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Path          β”‚ hermione > mocha > debug                                     β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ More info     β”‚ https://nodesecurity.io/advisories/534                       β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

ΠšΠ°ΠΆΠ΅Ρ‚ΡΡ, стоит ΠΌΠΈΠ³Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° Π±ΠΎΠ»Π΅Π΅ Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ mocha (ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ Π½Π° 4.1.0)

v.1 Breaking changes

  • Rename in cli conf option to config or configPath. It's more clear and obvious.
  • Add global browser variable instead of adding browser instance to the mocha context

НС Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ assertView

hermione 0.86.0, node v8.4.0, macos 10.13.6

//=== .hermione.conf.js ===
module.exports = {
    baseUrl: 'https://example.com',
    screenshotsDir: './_gemini-screens/',
    screenshotDelay: 3000,
    sets: {
        desktop: {
            files: 'test.js'
        }
    },
    browsers: {
        chrome: {
            desiredCapabilities: {
                browserName: 'chrome'
            }
        }
    }
};
//=== test.js ===
describe('the', function () {
    it('test', function () {
        this.browser
            .url('/')
            .assertView('plain', 'h1');
    });
});

hermione --update-refs Π½Π΅ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ эталоны
hermione Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚, Ρ‡Ρ‚ΠΎ тСсты проходят, Π΄Π°ΠΆΠ΅ ΠΊΠΎΠ³Π΄Π° assertView Π½Π°Ρ‚Ρ€Π°Π²Π»Π΅Π½ Π½Π° ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ элСмСнт.
screenshotDelay Π½Π΅ выдСрТиваСтся.

Allow passing ` "deprecationWarnings": false ` option for WDIO.

I'm using the some deprecated mуthods of WDIO and a lot of warnings displayed in the console:

WARNING: the "moveTo" command will be deprecated soon. If you have further questions, reach out in the WebdriverIO Gitter support channel (https://gitter.im/webdriverio/webdriverio).
Note: This command is not part of the W3C WebDriver spec and won't be supported in future versions of the driver. It is recommended to use the actions command to emulate pointer events.

(You can disable this warning by setting `"deprecationWarnings": false` in your WebdriverIO config)

To disable them I need to pass the "deprecationWarnings": false config to WDIO.

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° с исполнСниСм тСстов Π² IE

Π”ΠΎΠ±Ρ€ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ суток. НСдавно Π½Π°Ρ‡Π°Π» ΠΎΡΠ²Π°ΠΈΠ²Π°Ρ‚ΡŒ ваши инструмСнты для тСстирования вёрстки gemini ΠΈ hermione. Π’ chrome, firefox всё ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ. Бтолкнулся с ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ³ΠΎΠ½Π΅ тСстов Π² IE 11 Π½Π° windows. IE ΠΏΡ€ΠΈ запускС тСстов открываСтся, Π½ΠΎ ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚Ρ‹ Π½Π΅ Π΄Π΅Π»Π°ΡŽΡ‚ΡΡ, Π½ΠΈΠΊΠ°ΠΊΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π½Π΅ ΠΈΡΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ. ВСсты ΠΏΠ°Π΄Π°ΡŽΡ‚ ΠΏΠΎ истСчСниС Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚Π°. ΠŸΡ€ΠΎΠ±ΠΎΠ²Π°Π» ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ сСлСниума 2.47 - Π½Π΅ ΠΏΠΎΠΌΠΎΠ³Π»ΠΎ. ΠŸΠΎΠ΄ΡΠΊΠ°ΠΆΠΈΡ‚Π΅, поТалуйста Π² Ρ‡Ρ‘ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°? Π’ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅ IE ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽ ΠΊΠ°ΠΊ
browsers: { ie: { compositeImage: true, desiredCapabilities: { browserName: 'internet explorer', } }
Π’Π°ΠΊ ΠΆΠ΅ Π±ΡƒΠ΄Ρƒ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΡ€ΠΈΠ·Π½Π°Ρ‚Π΅Π»Π΅Π½, Ссли Π²Ρ‹ ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Ρ‚Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ³ΠΎ указания устройств для тСстирования ΠΈ снятия ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚ΠΎΠ², iphone, ipad, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅.

Screenshot inside iframe

Π”ΠΎΠ±Ρ€Ρ‹ΠΉ дСнь!
Бтолкнулся со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ: ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ контСкста Π²Π΅Π±Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° Π² iframe, ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ assertView Ρ„ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΡ€ΡƒΠ΅Ρ‚ Π»Π΅Π²Ρ‹ΠΉ Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ ΡƒΠ³ΠΎΠ» страницы, Π²Π½Π΅ Π°ΠΉΡ„Ρ€Π΅ΠΉΠΌΠ°.
ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ ΠΊΠ°ΠΊ Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ снятиС ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚ΠΎΠ² Π² контСкст Π°ΠΉΡ„Ρ€Π΅ΠΉΠΌΠ°?

it('SnapInsSupportFlowFirstPageReturn', function() { 
               return this.browser.element(iframelocator)
               .then(function (frame) {
                   return this.frame(frame.value)
               })
               .waitForVisible('#loading', 10000, true)
               .assertView('SnapInsSearchResultPageReturn', 'body');
}

НС удаСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ assertView

ΠŸΡ‹Ρ‚Π°ΡŽΡΡŒ Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΈΠ· Readme - выскакиваСт AssertViewError. Покопавшись Π² ΠΊΠΎΠ΄Π΅ Π³Π΅Ρ€ΠΌΠΈΠΎΠ½Ρ‹ выяснил, Ρ‡Ρ‚ΠΎ Π΅Π³ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ NoRefImageError, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ появляСтся ΠΈΠ·-Π·Π° Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎ Π² Π΄Π΅Ρ„ΠΎΠ»Ρ‚Π½ΠΎΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ (/hermione/screens) Π½Π΅Ρ‚ Π½ΡƒΠΆΠ½Ρ‹Ρ… скринов:
can not find reference image at D:\ ... \hermione\screens\2de3131\chrome\body.png for "body" state

По Readme ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π½Π΅ понятно, ΠΎΡ‚ΠΊΡƒΠ΄Π° ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ€Π°Ρ‚ΡŒΡΡ. Π‘ΠΏΠ΅Ρ€Π²Π° Π΄ΡƒΠΌΠ°Π» Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΊ Π² gemini, ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΌ запускС ΡΠΎΠ±ΠΈΡ€Π°ΡŽΡ‚ΡΡ, Π° ΠΏΡ€ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠΌ ΡΡ€Π°Π²Π½ΠΈΠ²Π°ΡŽΡ‚ΡΡ - Π½ΠΎ Π²ΠΈΠ΄ΠΈΠΌΠΎ Π½Π΅Ρ‚. Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π½Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ Π½Π°ΠΌΠ΅ΠΊΠ° Π½Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ΅ сохранСниС ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚ΠΎΠ².

Π•Ρ‰Π΅ занимаясь Π΄Π΅Π±Π°Π³ΠΎΠΌ этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π·Π°ΠΌΠ΅Ρ‚ΠΈΠ», Ρ‡Ρ‚ΠΎ screenshotPath Π½Π΅ подхватыватся ΠΈΠ· ΠΊΠΎΠ½Ρ„ΠΈΠ³Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ, выводящим ΠΎΡˆΠΈΠ±ΠΊΡƒ (ΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Π» ΠΈ Π±Π΅Π· этого ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ, ΠΈ с Π½ΠΈΠΌ - ΠΏΡƒΡ‚ΡŒ ΠΊ скринам Π² ошибкС Π½Π΅ мСняСтся).

Π’ ΠΎΠ±Ρ‰Π΅ΠΌ Π±Ρ‹Π» Π±Ρ‹ Ρ€Π°Π΄ пояснСниям, ΠΊΠ°ΠΊ этим ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ.

Full page screenshot с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Hermione

Π”ΠΎΠ±Ρ€Ρ‹ΠΉ дСнь!
НСдавно Π½Π°Ρ‡Π°Π» Π½Π°Ρ‡Π°Π» ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡŽ Hermione Π² Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊ вопрос, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ReadMe ΠΎΡ‚Π²Π΅Ρ‚Π° Π½Π΅ нашСл:
МоТно Π»ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Hermione Π΄Π΅Π»Π°Ρ‚ΡŒ полностраничный ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΏΡ€ΠΎΠ³ΠΎΠ½Π° тСстов? Ссли Π΄Π°, Ρ‚ΠΎ Π½Π΅ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ Π’Ρ‹ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ это ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ.
Бпасибо

Override hermione config with --conf

ΠŸΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ кастомный ΠΊΠΎΠ½Ρ„ΠΈΠ³ Ρ‡Π΅Ρ€Π΅Π· --conf

hermione --conf hermione/.hermione.custom.conf.js

пытаСтся ΠΈΡΠΊΠ°Ρ‚ΡŒ Π΄Π΅Ρ„ΠΎΠ»Ρ‚Π½Ρ‹ΠΉ ΠΊΠΎΡ„ΠΈΠ³

Unable to read config from path .hermione.conf.js

ВСрсия hermione - 0.65.2

How to make conditional check based on visibility [docs]

How to add conditional action for example based on whether given element is visible or not?
Tried various ways with promises but getting reference error for browser

e.x.
return this.browser
.url('/')

         // How to check here if element X is visible then moveToObject('#x');
        //  If X not visible then  moveToObject('#Y');
         
        // test continues
        .click('#Something')

How to debug integration tests?

When my test fails, I want to investigate what is wrong, opening a browser and checking a current state with devtools.

Webdriver.io has a debug method but the hermione doesn't. Could you suggest how to do a right debugging with hermione? It'd be great to have a documentation about it. It's a very important topic for the future clients.

Reports for Jenkins

Hello!

Want to run tests in the jenkins, but can't get report for Jenkins plugins for view results in build(use Xunit plugin).

Mocha has special reporter xunit
Add mochaOpts in config for Hermione like this

system: {
		mochaOpts: {
			reporter: 'xunit',
			timeout: 60000
		}
	}

It doesn't help, nothing change.

httpTimeout of undefined at [email protected]

$ node -v
v5.1.0
$ npm -v
3.3.12
$ npm ls -depth 0
[email protected] <CUT>
β”œβ”€β”€ [email protected]
β”œβ”€β”€ [email protected]
└── [email protected]
$ npm test

> [email protected] test <CUT>
> hermione

✘  "before all" hook [chrome] - 3ms
Total: 1 Passed: 0 Failed: 1 Pending: 0 Retries: 0

1)  "before all" hook
   in file undefined

   chrome
     ✘ TypeError: Cannot read property 'httpTimeout' of undefined
    at Browser._createSession (<CUT>/node_modules/hermione/lib/browser.js:68:58)
    at <CUT>/node_modules/hermione/lib/browser.js:28:45
    at Fulfilled_callInvoke [as callInvoke] (<CUT>/node_modules/q/q.js:1269:25)
    at Fulfilled_call [as call] (<CUT>/node_modules/q/q.js:1242:17)
    at Fulfilled_dispatch [as dispatch] (<CUT>/node_modules/q/q.js:1216:31)
    at Promise_dispatch_task (<CUT>/node_modules/q/q.js:978:28)
    at RawTask.call (<CUT>/node_modules/asap/asap.js:40:19)
    at flush (<CUT>/node_modules/asap/raw.js:50:29)
    at doNTCallback0 (node.js:430:9)
    at process._tickCallback (node.js:359:13)
npm ERR! Test failed.  See above for more details.

[email protected] - works correctly

Бвойство ΠΊΠΎΠ½Ρ„ΠΈΠ³Π° shouldRetry Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚

Бвойство shouldRetry Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚.

ΠŸΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽ ΠΎΡˆΠΈΠ±ΠΊΡƒ парсинга ΠΊΠΎΠ½Ρ„ΠΈΠ³Π°. ВСрсия hermione - 0.65.2

Π Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ с воспроизвСдСниСм:
https://github.com/vrozaev/hermione-should-retry-error

БтСктрСйс:
UnknownKeysError: Unknown options: root.shouldRetry
at node_modules/gemini-configparser/lib/core.js:52:19
at node_modules/gemini-configparser/lib/core.js:95:9
at new Config (node_modules/hermione/lib/config/index.js:37:24)
at Function.create (node_modules/hermione/lib/config/index.js:12:16)
at new BaseHermione (node_modules/hermione/lib/base-hermione.js:22:31)
at new Hermione (node_modules/hermione/lib/hermione.js:17:9)
at Function.create (node_modules/hermione/lib/base-hermione.js:16:16)
at Object.exports.run (node_modules/hermione/lib/cli/index.js:25:31)
at Object. (node_modules/hermione/bin/hermione:4:33)
at Module._compile (module.js:652:30)
at Object.Module._extensions..js (module.js:663:10)
at Module.load (module.js:565:32)
at tryModuleLoad (module.js:505:12)
at Function.Module._load (module.js:497:3)
at Function.Module.runMain (module.js:693:10)
at startup (bootstrap_node.js:188:16)
at bootstrap_node.js:609:3

Add parallelLimit option as it is done in Gemini.

It is required to have an ability to limix overall amount of simultaneous sessions for testing on Browserstack. Currently I got 30 browser x breakpoint combinations and getting errors from BS that my parallel limit reached.

Π£ΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽ hermione ΠΈΠ· npm ΠΈ выходят ошибки

Если с Π²ΠΎΡ€Π½ΠΈΠ½Π³Π°ΠΌΠΈ я Π΅Ρ‰Π΅ смогу(НавСрноС) Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ, Ρ‚ΠΎ с Π½ΠΈΠΆΠ΅ ΡƒΠΊΠ°Π·Π½Ρ‹ΠΌΠΈ ошибками, Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΏΠΎΠΊΠ° Π½Π΅ получаСтся.

npm WARN deprecated [email protected]: Jade has been renamed to pug, please install the latest version of pug instead of jade
npm WARN deprecated [email protected]: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue
npm WARN deprecated [email protected]: please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js

> [email protected] install D:\Dev\HermioneTest\node_modules\png-img
> node-gyp rebuild


D:\Dev\HermioneTest\node_modules\png-img>if not defined npm_config_node_gyp (node "C:\Program Files\nodejs\node_modules\npm\node_modules\npm-lifecycle\node-gyp-bin\\..\..\node_modules\node-gyp\bin\node-gyp.js" rebuild )  else (node "C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\bin\node-gyp.js" rebuild )
gyp ERR! configure error
gyp ERR! stack Error: Can't find Python executable "python", you can set the PYTHON env variable.
gyp ERR! stack     at PythonFinder.failNoPython (C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\lib\configure.js:483:19)
gyp ERR! stack     at PythonFinder.<anonymous> (C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\lib\configure.js:508:16)
gyp ERR! stack     at C:\Program Files\nodejs\node_modules\npm\node_modules\graceful-fs\polyfills.js:284:29
gyp ERR! stack     at FSReqWrap.oncomplete (fs.js:152:21)
gyp ERR! System Windows_NT 10.0.17134
gyp ERR! command "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild"
gyp ERR! cwd D:\Dev\HermioneTest\node_modules\png-img
gyp ERR! node -v v8.11.3
gyp ERR! node-gyp -v v3.6.2
gyp ERR! not ok
npm WARN [email protected] No description
npm WARN [email protected] No repository field.```

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.