gemini-testing / testplane

Testplane (ex-hermione) browser test runner based on mocha and wdio
https://testplane.io
MIT License
678 stars 62 forks source link

feat: enhance stacktraces #916

Closed KuznetsovRoman closed 2 months ago

KuznetsovRoman commented 2 months ago

What is done

First part of HERMIONE-1517 It only does two things:

Example

// test.testplane.ts
describe('section', () => {
    it('test', async ({browser}) => {
        await browser.url("https://www.npmjs.com/");
        await browser.customWaitForDisplayed("#not-existing");
    });
});
// .testplane.conf.ts
export default {
    ...
    prepareBrowser: browser => {
        browser.addCommand("customWaitForDisplayed", async (selector) => {
            return browser.$(selector).waitForDisplayed();
        });
    }
}

Before

✘ Error: element ("#not-existing") still not displayed after 1000ms
    at file:///Users/kroman512/gemini-testing/testplane/node_modules/webdriverio/build/commands/browser/waitUntil.js:39:23
    at async Element.wrapCommandFn (file:///Users/kroman512/gemini-testing/testplane/node_modules/webdriverio/node_modules/@wdio/utils/build/shim.js:81:29)
    at async Element.elementErrorHandlerCallbackFn (file:///Users/kroman512/gemini-testing/testplane/node_modules/webdriverio/build/middlewares.js:18:32)
    at async Element.wrapCommandFn (file:///Users/kroman512/gemini-testing/testplane/node_modules/webdriverio/node_modules/@wdio/utils/build/shim.js:81:29)
    at async Element.wrapCommandFn (file:///Users/kroman512/gemini-testing/testplane/node_modules/webdriverio/node_modules/@wdio/utils/build/shim.js:81:29)
    at async Element.wrapCommandFn (file:///Users/kroman512/gemini-testing/testplane/node_modules/webdriverio/node_modules/@wdio/utils/build/shim.js:81:29)
    at async Element.elementErrorHandlerCallbackFn (file:///Users/kroman512/gemini-testing/testplane/node_modules/webdriverio/build/middlewares.js:18:32)
    at async Element.wrapCommandFn (file:///Users/kroman512/gemini-testing/testplane/node_modules/webdriverio/node_modules/@wdio/utils/build/shim.js:81:29)
    at async Element.wrapCommandFn (file:///Users/kroman512/gemini-testing/testplane/node_modules/webdriverio/node_modules/@wdio/utils/build/shim.js:81:29)
    at async Browser.wrapCommandFn (file:///Users/kroman512/gemini-testing/testplane/node_modules/webdriverio/node_modules/@wdio/utils/build/shim.js:81:29)

After

✘ Error: element ("#not-existing") still not displayed after 1000ms
    at Browser.customWaitForDisplayed (file:///Users/kroman512/gemini-testing/testplane/node_modules/webdriverio/node_modules/@wdio/utils/build/shim.js:233:24)
    at Browser.customWaitForDisplayed (file:///Users/kroman512/gemini-testing/testplane/node_modules/devtools/node_modules/@wdio/utils/build/monad.js:146:33)
    at Object.<anonymous> (/Users/kroman512/gemini-testing/testing-project/tests/example.hermione.js:8:23)