5

"Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away." - Antoine de Saint-Exupery In general, strive to make UI tests more horizontal(end to end , not deep) and lower level tests more vertical(in depth). In my automation journey, I learned few hard lessons in UI tests as below: Have fewer ...


3

This is a pretty common situation that I was in and have seen others in. Being in the "middle tier" of experience can feel like hitting a wall or even a plateau. You want to move upward but feel stuck. It also doesn't help that the industry has a focus of either "manual" or "automation". It's very "or" minded instead ...


2

WebDriver block = driver.findElement(By.xpath("//*[@id=\"www-wikipedia-org\"]/div[11]/div[3]")); A WebDriver is not an WebElement; objects of these types are in different objects hierarchies. https://www.javadoc.io/doc/org.seleniumhq.selenium/selenium-api/2.50.1/org/openqa/selenium/WebDriver.html https://www.javadoc.io/static/org....


1

It seems there are only three allowed formats for input type time: HH:mm (e.g. 01:30 or 23:15) HH:mm:ss (e.g. 10:00:30) HH:mm:ss.SSS (e.g. 12:00:00.384) You can also use .invoke() command: cy .get('[data-testid=time]') .invoke('val', '01:52:08 AM'); Basically whatever is possible in JavaScript is possible in Cypress. So here you can invoke jQuery ...


1

// Enter card details in to Stripe iframe fields cy .get('iframe') .its('0.contentDocument.body').should('not.be.empty') .then(cy.wrap) .find('input[data-elements-stable-field-name="cardNumber"]') .type('4242424242424242') cy .get('iframe') .its('1.contentDocument.body').should('not.be.empty') .then(cy.wrap) .find('input[data-...


1

Cucumber uses its own mechanism to instantiate objects (aka dependencies) which are referenced as glued classes fields or parameters of glued classes methods. It uses ObjectFactory that by default creates new instance for each field/parameter on each scenario step. The conditions which determine if the same field would reference the same object is called &...


1

Your question mentioned both active and visible and they are separate as in: visible / not-visible active / not-active (disabled but visible) These two different pieces of state should be considered as in: cy.get('.mySelector').should('be.visible').click(); cy.get('.mySelector').should('be.disabled'); cy.get('.mySelector').should('not.be.disabled');


Only top voted, non community-wiki answers of a minimum length are eligible