Understanding XPath

Following my latest article "CssSelectors not only for styling" many people asked me about the difference between using CssSelector and XPath, and what are the benefits to using XPath as a locator. Sadly, I see many engineers struggling to identify an element by using other selectors, find themselves blindly copying a WebElement's XPath using the option provided by the browser. The deal is that the expression received is mostly highly flaky and ugly none the less.
In this article, I'm going to cover this topic and see if we can demystify XPath and make it more accessible.
What is XPath? XPath stands for XML Path Language. It is basically a Quarry language that was originally made for selecting nodes from an XML document that was defined by the W3C. XPath can be used for XML schemes and also in many programming languages (Such as Java, Python, PHP, and even C).
How is it related to Test Automation? XPath is one of the 8 locating methods (9 if you count relative locat…

What's new in Test Automation? - Someone is pulling the strings once again

Reading the headline of this article you are probably wondering what is the reason for the "Pulling the strings" analogy. Well, you will understand why in a minute.

So what is Playwright? Playwright is an Open SourceNode library for automating Chromium, WebKit, and Firefox by using a single API. It also supports Headless mode for all browsers on all platforms.
Playwright interacts with the browser via the native Debugging protocol (CDP) and according to the contributors was designed with the primary goal of boosting up test automation, eliminating flakiness, speeding up executions and allowing better browser operation. All things mentioned make Playwright an interesting new option for Test Automation.
Sound familiar?

If all of that sounds familiar to you, it is not a coincidence. Playwright was created by the same team that developed the notorious "Puppeteer" (Which is a very similar Node library that offers control over Chromium via the Dev Tools Protocol and is …

CssSelectors - Not only for styling

As we all (Selenium users) know, There are 8 locator types that allow us to identify WebElements in our AUT. (And now, relative locators were added in the latest Selenium 4 release). In this post, I want to talk a little bit more about CSS Selectors. CSS Selectors are highly useful and powerful, and yet, for many Selenium users, it will often be the last choice. Perhaps, from lack of exposure to its capabilities. Let's start with defining what is a CSS SelectorFirst, just to be in sync, CSS stands for Cascading Style Sheet. Little that we know, but a CSS Selector is actually a part of the CSS Ruleset that allows Web Developers to style a particular content of the DOM. In other words, by using CSS Selectors, we can "tell" the browser which HTML elements should be selected to have the CSS rule applied to them. What is a CSS Rule?A CSS rule is a statement that defines the style of one or more elements on the webpage. It consists of a selector and a declaration, and it will app…

Git Internals - in a nutshell

Git Internals - in a nutshell

People use a tool or technology on a daily basis, sometimes for years, without truly understanding it in-depth or knowing how it really works. In this blog post, we will take a closer look at the wonderful world of Git.

Let's start by establishing what git is
Well, if we ask Dr. Google we will probably get the following answer: "Git is a distributed version control and version management system". Now, let's break down what we just read and see if we can find a more reader-friendly explanation.

So, here is the deal. Git is the most widely used version control system in the world and quite surprisingly it is actually a well maintained and super popular open source.

Why do we need git?
Well, first of all, Git is able to track changes in files by using snapshots of the filesystem. Try to imagine that instead of source code you and your team are working on the same Google doc. What would happen? you would basically override each other's cha…

Containers - Let's get moving!

I recently posted an article about Docker and how it changed the way we perceive virtualization and deployment tasks. If you haven't read that one, I strongly recommend that you start by reading it before continuing to this one. Who are you, Docker?

In this short post, we are going to talk a little bit more about Containers. No, not the ones we use to ship out cars, clothes, electric Items and other goods. The ones we use to make it easier for us to manage virtualization and deployment tasks.

What is a Container?
Well, if we go to Google, we will find this definition:

"A container is a standard unit of software that packages up the code and all its dependencies so the application runs quickly and reliably from one computing environment to another."

Now let's try to better understand how it works. Take a look at the drawing below.

Let' say we have a machine with a Linux OS.
As we see in the above drawing there are several processes running on that machine.
In this …

Automated Mindset

A part of my fascinating role in is arriving at our customer's headquarters and helping them achieve their automation goals. This type of Solution Architecture is truly challenging and interesting because there is no "One size fit all approach" and each company has its own unique challenges, agenda, mindset, and skillset.

There are many difficulties in implementing test automation, one of which is changing your mindset from manual testing to automation-oriented perception.
One of the first things I tell everyone I meet is "before a single line of code is written, stop! take a piece of paper and a pen and list down your goals. Plan as detailed as you can what it should be like".
I noticed by talking to testers, that it is very difficult for some of them to detach themselves from what they are used to perform manually and try to think about automated tests from a different point of view.
One of the biggest common mistakes is attempting to automate every…

Kubernetes (K8S) introduction

So, by now chances are you have heard about Kubernetes at least ones. In this article, we will try to demystify Kubernetes and transform this buzzword into something we can comprehend.
To those of you that didn't get a chance to read one of my previous articles introducing the key concepts of Docker, (Who are you, Docker?) I strongly suggest you start by reading that article before you move forward to this one.

So what is Kubernetes?
Kubernetes, (commonly stylized as K8s) is an open source originally designed by Google. It is a container orchestration system for automating application deployment, scaling, and management.

Cluster who? -  Terminology that will help us move forward.
For one let's understand what is a cluster.
If you ever played around with Docker containers you must know how easy it is to spin up several Containers or multi-container applications. Maybe you even got a chance to experiment with docker-compose.  For something very small this kind of deployment could…