Automation Rhapsody

Basic overview of software design patterns

Basic overview of design patterns.

Distributed system observability: extract and visualize metrics from OpenTelemetry spans

How to extract metrics from spans by OpenTelementry collector, store them in Prometheus and properly visualize them in Grafana.

Distributed system observability: Instrument Cypress tests with OpenTelemetry

Instrument Cypress tests with OpenTelemetry and be able to custom trace the tests.

Distributed system observability: Instrument Selenium tests with OpenTelemetry

Instrument Selenium tests with OpenTelemetry and be able to custom trace the tests themselves.

Distributed system observability: Instrument React application with OpenTelemetry

Create a React web application using the Material UI design system and instrument the application with OpenTelemetry.

Distributed system observability: Instrument Spring Boot application with OpenTelemetry

Instrumenting a Spring Boot Java application with OpenTelemetry.

Distributed system observability: complete end-to-end example with OpenTracing, Jaeger, Prometheus, Grafana, Spring Boot, React and Selenium

Code examples and explanations on an end-to-end example showcasing a distributed system observability from the Selenium tests through React front end, all the way to the database calls of a Spring Boot application. Examples are implemented with the OpenTracing toolset and traces are saved in Jaeger. This example also shows a complete observability setup including tools like Grafana, Prometheus, Loki, and Promtail.

How to gather code coverage with Istanbul and Selenium and pitfalls to avoid

Istanbul does not seem to be recoding code coverage correctly, it turned out that the tests do navigation by changing the URL, which resets the code coverage.

How to use AWS Transcribe in real-time with React and .NET Core

Practical code example how to use AWS Transcribe from an application with React frontend and .NET Core backend.

AWS examples in C# - structured logging in .NET Core and AWS Lambda

Code examples of how to do structured logging in .NET Core and C# AWS Lambda.

AWS examples in C# - AWS CLI commands

Important AWS CLI commands used in AWS examples in C#.

AWS examples in C# - introduction to Serverless framework

Introduction to Serverless framework and .NET code example of a lambda function with API Gateway.

AWS examples in C# - create basic Lambda function

Code examples on how to create AWS Lambda function in .NET Core.

AWS examples in C# - working with Lambda functions

Iintroduction to AWS Lambda functions.

AWS examples in C# - create a service working with DynamoDB

Introduction to NoSQL, introduction to DynamoDB and what are its basic features and capabilities.

AWS examples in C# - basic DynamoDB operations

Code examples with DynamoDB write and read operations.

AWS examples in C# - create a service working with SQS

To give a basic overview of AWS SQS, how to write a message to it and how to make a consumer that constantly polls the queue for new messages.

AWS examples in C# - basic SQS queue operations

Code examples of how to perform basic SQS queue operations like reading, writing, deleting, creating a queue, etc.

AWS examples in C# - run the solution

Explanation of how to install and use the solution in AWS examples in C# blog post series.

AWS examples in C# - working with SQS, DynamoDB, Lambda, ECS

Overview of the AWS examples in C# series.

Git clone with predefined user email and user name

Small bash script to clone a Git repository and set user.email and user.name.

Serialize and deserialize enum values to custom string in C# with Json.NET

How to serialize and deserialize C# enum values to customs strings.

Dockerize React application with a Docker multi-staged build

How to build React application inside a Docker container, with a multi-staged build and then run it with NGINX or Caddy.

Create .NET Core health checks with custom response payload

How to extend custom .NET Core health checks so the response JSON provides more information.

Optimize the size of Docker images

How to optimize the size of the Docker images, by using intermediate build image and final runtime image.

Create project for .NET Core custom template

How to create a custom .NET Core template, install it and create projects from it.

Restore deleted Git stash

How to restore deleted Git stash.

Ansible playbook example and how to provision it in Vagrant

Brief introduction to Ansible with and playbook example. Example of provisioning of the Ansible Playbook into Vagrant.

Testing with Cypress - Code coverage with Istanbul

This article describes how to extract and process Istanbul code coverage, and generate HTML reports.

Testing with Cypress - Basic API overview

Basic overview of the Cypress API with code samples for some of the interesting features.

Testing with Cypress - Custom logging of errors and JUnit results

Description of the custom error logger and also custom JUnit XML file creator.

Testing with Cypress - Build a React application with Node.js backend

Short introduction to the application under test that is created for and used in all Cypress examples. It is React frontend created with Create React App package. Backend is a Node.js application running on Express.

Testing with Cypress - lessons learned in a complete framework

In the current post I will share some lessons I've learned using Cypress for quite a long time. Along this journey, I created a framework which solves some of the pain points that Cypress has.

Code coverage of Ruby on Rails application with simplecov

How to measure code coverage of Ruby on Rails application with simplecov.

Performance testing in the browser

Approaches for performance testing in the browser using Puppeteer, Lighthouse, and PerformanceTiming API.

What is The Test Mushroom and how to improve your testing

In contrast to Test Pyramid, Test Mushroom shows a test portfolio which is restricted to costly and slow UI tests only. In the current post, I will describe approaches to act on your Test Mushroom hence improve your testing.

Cypress vs. Selenium, is this the end of an era?

Blog post about a Cypress talk I did recently on a local conference. The presentation compares Cypress with well knows Selenium.

.NET Core code coverage on Linux with MiniCover

How to run code coverage of your unit tests as part of your build on Linux build agents.

Build a REST API with Express on Node.js and run it on Docker

Code examples how to create RESTful API with Node.js using Express web framework and then run it on Docker.

Code coverage of .NET Core unit tests with OpenCover

Examples how to measure code coverage of .NET Core unit tests with OpenCover.

Useful .NET Core SDK CLI commands

Some useful .NET Core SDK CLI commands.

.NET Core integration testing and mock dependencies

How to do integration testing on .NET Core application and stub or mock some inconvenient dependencies.

Build a REST API with .NET Core 2 and run it on Docker Linux container

Code examples how to create RESTful API with .NET Core 2.0 and then run it on Docker Linux container.

How to run Linux on Windows 10

Details how to install Ubuntu Linux on Windows 10 and some reasons why to do it.

Best practices in software delivery process

Short overview of a software delivery process which I consider very good and worth the "best practice" label that is being practiced in a very successful software company.

Partial JSON deserialize by JsonPath with Json.NET

Code examples how to deserialize only part of a big JSON file by JsonPath when using Newtonsoft Json.NET.

Soft assertions for C# unit testing frameworks (MSTest, NUnit, xUnit.net)

Code example of very easy and useful custom implementation of soft assertions in C# unit testing frameworks such as MSTest, NUnit or xUnit.net.

Convert NUnit 3 to NUnit 2 results XML file

Examples how to convert NUnit 3 result XML file into NUnit 2 result XML file.

Java 8 features - Stream API advanced examples

This post explains Java 8 Stream API with very basic code examples.

Java 8 features - Stream API basic examples

This post explains Java 8 Stream API with very basic code examples.

Java 8 features - Stream API explained

Code examples of Java 8 Stream API showing useful use cases.

Java 8 features - Lambda expressions, Interface changes, Stream API, DateTime API

Short overview of the most interesting and useful Java 8 features.

Run multiple machines in a single Vagrant file

How to run multiple machines on Vagrant described in a single Vagrantfile.

Run Docker container on Vagrant

How to run Docker container on Vagrant.

Run Dropwizard Java application on Vagrant

How to run Dropwizard or any other Java application on Vagrant.

What is Vagrant and why to use it

Brief description on Vagrant and when and why to use it.

Install Java application as a Linux service

Code snippet how to start Java application as a Linux service.

Build a Dropwizard project with Gradle

Code examples how to create Dropwizard project with Gradle.

PowerMock examples and why better not to use them

In this post, I have summarised all PowerMock examples I've given so far. More important I will try to give some justification why I think necessity to use PowerMock is considered an indicator for a bad code design.

Mock new object creation with PowerMock

How to control what objects are being instantiated when using PowerMock.

Mock private method call with PowerMock

How to mock private method with PowerMock by using spy object.

Call private method with PowerMock

How to invoke a private method with PowerMock.

Soft assertions that do not fail JUnit test

Code examples how to use assertions that do not fail the unit test immediately.

Verify static method was called with PowerMock

How to verify that static method was called during a unit test with PowerMock.

Manage Microsoft Excel files in Java with Apache POI

Code examples how to manage Microsoft Excel documents with Apache POI Java library.

Manage and automatically select needed WebDriver in Java 8 Selenium project

Example code how to efficiently manage and automatically select needed local WebDriver using Java 8 method reference used as lambda expression.

Run Dropwizard application in Docker with templated configuration using environment variables

How to run Dropwizard application inside a Docker container with configuration template file which later gets replaced by environment variables.

Data driven testing with JUnit and Gradle

How to do data-driven testing with JUnit and Gradle.

Coloured log files in Linux

How to colour your log files for better perception under Linux.

Mutation testing for Java with PITest

Introduction to mutation testing and examples with PITest tool for Java.

Mock/Stub REST API with WireMock for better unit testing

Examples how to use WireMock to stub (mock also is possible as a term) REST API in order make better unit testing.

Create simple REST API client using Jersey

Code examples how to create REST API client using Jersey.

Amazon S3 file upload with cURL and Java code

Working Java code to upload a file to Amazon S3 bucket with cURL.

Mock static methods in JUnit with PowerMock example

Examples how to mock static methods in JUnit tests with PowerMock.

Data driven testing with JUnit parameterized tests

How to do data-driven testing with JUnit parameterized tests.

Introduction to Postman with examples

This post is demonstrating different Postman features with examples.

JSON format to register service with Eureka

What JSON data is needed to register service node with Eureka server.

Unmarshal/Convert JSON data to JAXBElement object

How to marshal and unmarshal JAXBElement to JSON with Jackson.

MD5, SHA-1, SHA-256 and SHA-512 speed performance

Speed performance comparison of MD5, SHA-1, SHA-256 and SHA-512 cryptographic hash functions in Java.

Implement secure API authentication over HTTP with Dropwizard

Reference implementation on suggested in "How to implement secure REST API authentication over HTTP" post authentication mechanism.

How to implement secure REST API authentication over HTTP

How to implement secure API authentication even over HTTP.

Assert Mockito mock method arguments if no equals() method implemented

How to assert mock method is called with the specific object as an argument in case no equals() method is implemented on argument object.

Mock JUnit tests with Mockito example

Why mocking is needed in unit testing and how to do it with Mockito.

Avoid multithreading problems in Java using ThreadLocal

What are common approaches to deal with multithreading problems in Java. What is ThreadLocal and how to use it.

JUnit methods execution sequence

Details with code samples on JUnit methods execution sequence.

Retry JUnit failed tests immediately

How to retry failed JUnit tests immediately and if a retry is OK then report test as passed.

Use JUnit rules to debug failed API tests

What are JUnit rules and how to use them to improve debugging of failed API tests.

Code coverage of manual or automated tests with OpenCover for .NET applications

Examples how to do code coverage of manual or automated functional test with OpenCover tool for .NET applications

Create Cucumber JVM custom formatter

How to implement custom formatter for Cucumber JVM.

Running Cucumber tests in parallel

Details with code samples how to run Cucumber JVM tests in parallel.

Introduction to Cucumber and BDD with examples

Code examples and introduction to Cucumber, a framework that runs automated tests written in behavior driven development (BDD) style.

IntelliJ IDEA toString templates for JSON output

Templates to be applied to IntelliJ IDEA for automatic generation of toString() method that outputs the object in JSON format.

IntelliJ IDEA keyboard combinations

Some very useful keyboard combinations when working with IntelliJ IDEA.

Performance testing with Gatling - reports

Some details on Gatling results report.

Performance testing with Gatling – advanced usage

Code samples and explanation how to do advanced performance testing with Gatling, such as proper scenarios structure, checks, feeding test data, session maintenance, etc.

Performance testing with Gatling - integration with Maven

Code samples and explanation how to create performance testing project with Gatling and Maven and run it with Maven plugin.

Performance testing with Gatling - recorded simulation explanation

Explanation of automatically generated code of recorded Gatling simulations.

Performance testing with Gatling - Scala fundamentals

Tutorial that covers basic Scala functionalities that may be needed during Gatling automation.

Performance testing with Gatling - record and playback

How to record a simulation with Gatling recorder and play it back.

Performance testing with Gatling

Tutorial how to use Gatling and do successful performance testing with it.

Performance, Load, Stress and Soak testing

Performance, Load, Stress and Soak testing are different aspects of one goal - proving that application will function correctly with a large number of users.

Code coverage with JaCoCo offline instrumentation with Maven

Tutorial how to do code coverage with offline instrumentation with JaCoCo and Maven.

Automated code coverage of unit tests with JaCoCo and Maven

Tutorial how to setup code coverage with JaCoCo on unit tests to be done on each Maven build.

Code coverage of manual or automated tests with JaCoCo

Tutorial how to do code coverage on automated or even manual functional tests with JaCoCo.

JPS alternative for Dropwizard - Servlet with Apache Velocity template engine

How to create a web application with Dropwizard with Servlet and Apache Velocity template engine since JSP is not supported.

Send SOAP request over HTTPS without valid certificates

How to send SOAP request over HTTPS in Java without generating and installing certificates. NB: This MUST not be used for production code!

REST performance problems with Dropwizard and Jersey JAXB provider

Dropwizard's performance highly degrades when using REST with XML caused by Jersey's Abstract JAXB provider. Solution is to inject your own JAXB provider.

How to do proper performance testing

Describe what actions are needed in order to make successful performance testing.

Build a RESTful stub server with Dropwizard

How to make a RESTful server that can be used for stub during testing.

Get rid of Getters and Setters

Use Project Lombok to reduce the amount of code you have to write by automating Getters and Setters generation

FIX messages simulator

General thoughts how to test FIX messages with a FIX simulator.

What about code coverage

Code coverage is a measurement of what percentage of program source code is being executed by your tests. Code coverage is a nice to have, but in no case make code coverage ultimate goal!

Advanced WPF automation - memory usage

Highlight eventual memory issue when using Telerik Testing Framework and TestStack White for desktop automation.

Automation SMTP Server

Automation SMTP Server is simple SMTP server run as console application.

Complete guide to email verifications with Automation SMTP Server

How to do complete email verification with your own Automation SMTP server.

Extract and verify text from PDF with C#

How to extract text from PDF in C#.

Text verification

Verify actual text with expected one by ignoring what is not relevant during compare.

Advanced WPF automation - read dependency property

What is dependency property in .NET and how to read it from Telerik Testing Framework.

Advanced WPF automation - working with WinForms grid

Example how to work with WinForms grid with TestStack White.

Advanced WPF automation - page objects inheritance

re-use of page objects code through inheritance.

Advanced WPF desktop automation

In this series of posts I'll expand the examples and ideas started in "Automation of WPF applications" series.

Multilingual automation testing with enumerations

Solution for automated testing of multilingual sites by using string values in all supported languages for enumerations.

Efficiently use of enumerations with string values in C#

Using enumerations or specialized classes makes your automation tests easy to understand and maintain. Show with code samples how to define and read string value to enumeration elements.

NTestsRunner

NTestsRunner is a tool for running functional automated tests.

NTestsRunner for functional automated tests

NTestsRunner implementation details and features.

Running functional automation tests

.Unit testing frameworks are not very suitable for running functional tests. NTestsRunner is an alternative way of running functional automated tests.

WPF automation - running the tests

How to sell your automation to management. Guide for running the tests unattended.

WPF automation - using the elements

Use already created Page Objects and build up test framework.

WPF automation - locating and structure of WinForms elements

Guide how to locate WinForms elements with TestStack White.

WPF automation - locating and structure of WPF elements

Guide how to locate WPF elements with Telerik Testing Framework.

WPF automation - projects structure

How to structure projects in the course of WPF automation.

Automation of WPF applications

Overview how to successfully automate WPF application with Telerik Testing Framework and TestStack White.

Complete guide how to use design patterns in automation

Complete code example of how design patterns can be used in real life test automation.

Singleton and Null object patterns

Description with code samples of Singleton and Null object design patterns.

Factory design pattern

Description of code samples of Factory design pattern.

Facade design pattern

Description with code samples of Facade design pattern.

Page objects design pattern

Description of code samples of Page Objects design pattern.

Design patterns every test automation engineer should know

Description with examples of 5 design patterns that is good to know and use in our automation testing.

Selenium WebDriver cannot click UTF-8 icons

Selenium WebDriver is not able to click UTF-8 icons. The solution is to use jQuery code.

Efficient waiting for Ajax call data loading with Selenium WebDriver

This post is about implementing an efficient mechanism for Selenium WebDriver to wait for elements by execution of jQuery code.

Automating SignalR applications with Selenium WebDriver

This post is about a "No response from server for url" issue during automation of web application using SignalR with Selenium WebDriver. The issue was resolved by configuring the application to connect to the server through WebSocket protocol.