Write BDD E2E tests using Cucumber and Playwright. While both tools support multiple programming languages (Python, Java, Javascript, and more), I will focus on my language of choice which is Javascript (more specifically — Typescript).

Why BDD (Behavioral Driven Development)?

In BDD you write your system requirements in structural but natural language. Writing End-to-End tests in a natural language enlarges the audience that can read and use them. This means your Product Management and Customer Success teams can read and comment on your tests without knowing any programming language.

Gherkin is a BDD language that uses some keywords to describe the scenarios. …

Playwright is Microsoft’s new alternative to browser-based test automation. We have recently switched from Webdriverio / Selenium to Playwright. Here are the top reasons:

1 — Selectors

I just love PW selectors! Playwright selectors are built as strings comprised of sections where each section is a selector by itself. A selector looks like this:

css=#menu >> css=div.menu-item>> text="Books" 

This will search the top for the menu element, a menu item inside that contains the text “Books”.

Moreover, if you are using Web Components on your website, you can decide if the selectors will pierce the shadow DOM or not. Piercing the Shadow Dom…

Guidelines you may want to follow if you are publishing a UI components library.

Image by Arek Socha from Pixabay

The problem

The JavaScript world has a unique feature: it has multiple runtime environments all running the same code. On one side we have the browsers, provided by different manufacturers and in different versions. On the other side, we have Nodejs running on the server, also in different versions. (Side note: you probably want to watch out Deno, an interesting server runtime).

After almost two decades of hibernation of the language, JavaScript gained huge momentum with new features coming to the language daily (well, yearly, but the metaphor works better this way). …

Image by Alex Myers from Pixabay

Monorepos used to be thought of as a solution suitable only to large enterprises, but recently, it seems, the need for them has become apparent to teams of all sizes.

This growth in demand has been met by the creation of numerous tools that offer simpler implementations for this type of code management architecture.

Before we review the most prominent tools, let’s first set out a clear definition for monorepos.

The Wikipedia definition refers to a monorepo as a

Software development strategy where code for many projects is stored in the same repository.

I aim for a more precise definition…

Keep your projects synced with automated GitHub pull requests on new component versions.

Bit.dev now provides integration with GitHub.

This integration lets you get automated PRs to update projects with the latest component versions. And, it lets you track and control exactly which components are used or updated in which project- by which team.

Component consumers can get automated PRs for new versions of components, and effortlessly keep their components up to date.

Component maintainers can gain visibility into their component’s usage and adoption, to learn which PRs were merged and who’s lagging behind.

A real-life story of one component and two applications

Photo by Sophie Elvis on Unsplash

Why Share Components?

A story of two applications

Here is a scenario which may look very familiar:

SOSA company has two code repositories: Shoppy is an online shopping e-commerce application, and Stocky — an inventory management application. Jane is a developer in the Shoppy team and her colleague, John, is working in the Stocky team.

Recently, Jane has developed a great product-list component for displaying products in Shoppy. John has seen Jane’s component and would like to use it in Stocky. He realized that this component would be great to be used in Stocky to show the existing products and updating their current Stock. …

Photo by Markus Spiske on Unsplash

This is an update to my previous article on Testing StencilJS adopted for Stencil One (stencil 1.0) unit testing. Scroll to the end of this article to read a short opinionated history of Stencil unit testing evolution.

In this article, as in the previous one, I will assume you are familiar with unit testing basics as well as with Jest, and are looking to implement them with Stencil. Buckle on!


Although Stencil is provided a command line to run unit testing, I prefer to have a standard jest config. …

Welcome to the rescue zone. If you have come so far, it is probably because you found yourself cursing Apple for their iOS signing process and the confusion around it. Stay calm, we have all been there and survived to tell.

This is not another how-to article. Plenty of those exist around. Here, I will try and draw a higher level picture of how the iOS signing work. Getting a mental model of the process is useful when things go less smoothly and you need to trouble shoot your errors.

This article is written and published on March 2019. XCode…

Photo by Alvaro Reyes on Unsplash

Update: The newer version of this article is here. Changes made in Stencil make this article mostly irrelevant.

Note: Tests were adopted to changes performed in Stencil 0.7.19

Testing stenciljs is still in its infancy, and I found myself collecting some best practices and code examples on testing the component. The first batch is here:

The application tested is a Todo app, similar to the ones on the Todomvc website. The application is based on the stencil-app-starter and has 3 components:

Quick recap: In previous parts we covered the notion of E2E testing, extended to the mobile world and discussed the tooling required.

Software design is the art of trade offs. You make some decisions that will gain some value but will likely preclude some other benefits. A famous example is the Project Management Triangle, balancing between cost, time and scope.

A similar, but more specific triangle can be applied on E2E testing (although the above is still true for any project). I would claim that when you design your tests, you may balance between 3 factors:

Coverage Velocity

The coverage and the…

Tally Barak

If you can’t explain it simply, you don’t understand it well enough.” — Einstein

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store