Blog

  • Operating systems (OS) have transformed computing from the early days of single-program execution to the complex, multitasking environments we use today. They manage hardware resources, ensure smooth application performance, and provide essential features like hardware management and data security. Modern OS come in three main types—Windows, Linux, and macOS—each with distinct characteristics. Understanding OS functionality…

    Operating Systems. How They Work and Why They Matter?
  • Recently, I’ve been involved in conducting code reviews for my team’s end-to-end test automation project, which utilizes Playwright technology. I dedicate about a couple of hours each day to this task, either by reviewing others’ code or by responding to feedback on my own pull requests. In this article, I would like to point out…

    Key Aspects I Consider in Automation Project Code Reviews.
  • In this article, we explored the implementation of the Page Object Model (POM), a powerful design pattern that abstracts crucial elements like page properties, locators, actions, and assertions. When implementing POM in Playwright, it’s essential to keep in mind best practices, such as creating distinct classes for each page, defining methods for user interactions, and…

    Part4: Implementing Page Object Pattern to Structure The Test Suite
  • In this article we’ve explored the aspects of writing test cases using Playwright. We delved into the standard structure of a test case, covering essential elements such as hooks and grouping for efficient test management. Additionally, we examined various strategies for locating elements within web pages. Lastly, we discussed the importance of assertions in verifying…

    Part3. Writing your first test case.
  • This is the second part of a series on Playwright using Typescript and today we are going to talk about challenges in UI Test Framework and explore how leveraging Playwright Best Practices can help us overcome them.

    Part2: Have your test cases been suffering from ‘Flakiness’?
  • In this article I walk through a journey to creating a Playwright framework using Typescript. We delved into executing test cases, setting up the development environment, and installing necessary extensions. Additionally, we gained insights into debugging properly and speeding up development process through the utilization of the built-in codegen functionality.

    Part1: Getting Started with Playwright using Typescript.
  • The article explores the integration of Large Language Models (LLMs) in the testing process. Beginning with an introduction to LLMs, it uncovers their potential applications, including generating test cases, automating repetitive tasks, and maintaining test cases. The article lists strategies for leveraging LLMs effectively in testing, emphasizing the importance of bringing humans in the loop…

    Assist testing with AI capabilities.
  • Playwright provides bunch of powerful features for debugging! And one of them is verbose logging. According to the Playwright documentation, by running the command: DEBUG=pw:api npx playwright test you can get detailed overview of what is happening behind the scenes. If you make a step further and install Playwright Extension, which will give you the whole…

    Enabling debugging functionalities in Playwright tests for VSCode.
  • 🤨 What is API Testing? API testing is important for validating the functionality of the API and ensuring that it meets the functional requirements. It is critical for integration testing since APIs are used to communicate between different software systems. API testing helps to identify issues early in the development cycle and prevents costly bugs and…

    Part 2. How to approach API testing?
  • This is the first part of series about API Testing. I am going to start with general concepts, I will talk about fundamental concept of APIs, tracing their historical roots, exploring various types of protocols they employ, and understanding the essential components that constitute an API. A Historical Perspective Back in the 1950s, an API…

    Part 1: API explained