Our pytest failure summary until recently showed only Assertion errors when there was a failure. Even though we printed active logs displaying the failed steps on the console and in the log file, we realized that a more useful failure summary would greatly assist in investigating the error and speeding up our possible future actions. This is how the failure […]
Creating a custom pytest plugin for better failure summary
Creating Asynchronous Automation test using Playwright & pytest
Qxf2 explored an advanced capability with Playwright recently – writing asynchronous tests. Given our admiration for pytest we picked the Playwright-pytest plugin for our research. While we were impressed with the pytest integration, we noticed the official and community documentation only featured synchronous examples using pytest. This post will hopefully bridge this gap. We figured working on fitting pytest with […]
Update LambdaTest test session with test run status
In this post, we will show you how to update the test run status on LambdaTest. Although there are many articles online about integrating LambdaTest for running automation tests, most of them do not discuss how to update the test run status and importance of it. This post is a follow up to running test automation on LambdaTest using pytest. […]
Run automation tests on LambdaTest using pytest
Qxf2 has been using popular cross-browser tools like BrowserStack and Sauce Labs for long. Recently, we integrated the LambdaTest tool also with our Page Object Model Framework. So we thought to write about it. In this post, we will guide you through the process of running automation tests on LambdaTest using pytest. We will cover everything from setting up your […]
Asynchronous API Automation testing using Qxf2’s Framework
You can now create asynchronous API automation test using Qxf2’s API Automation Framework. In this post we will go about explaining: – Why we need Async? – How we modified our Synchronous framework to support Asynchronous HTTP calls – How to create an Async API Automation test using our framework – Cases where Async is not the right fit Note: […]
Use pytest to run Great Expectations checkpoints
At Qxf2, we’ve successfully integrated Great Expectations into majority of our projects. We now have GitHub workflows in place to run Great Expectations checkpoints before deploying our applications to production. However, as our test suite expanded, we encountered a few challenges: 1. Triggering valid checkpoints. 2. Aggregating checkpoint results. To address these issues, we turned to pytest. In this post, […]
GitHub Actions to execute tests against localhost
Do you want to setup a GitHub Actions to execute some tests against localhost at CI stage for every branch? Background In this post, we will discuss how we at Qxf2 have setup a GitHub Actions to execute selenium tests against localhost at the CI stage for every branch and the errors that we faced while setting up and how […]
Allure integration with pytest
Recently, I was on the lookout for a good open-source reporting tool other than the ReportPortal tool which we already integrated with pytest in the past. As a result, I came across a tool called Allure. When I started integrating allure with pytest, I stumbled upon a couple of errors as there was no straightforward guide to do so. Therefore, […]
Writing end to end test for microservices based architecture used for posting skype messages
Recently, I have attempted to test microservices based architecture where the AWS Lambda function consumes messages from a microservices endpoint and posts them to the skype channel. I have made an attempt to add most of the validations for the flow. I have included this end-to-end test in the below blog. Background: The above architecture explains, microservices based architecture which […]
Pytest, argparse.ArgumentError and the -V: conflicting option
The CI tests for our open sourced framework suddenly started failing with: argparse.ArgumentError: argument -V/–ver: conflicting option string: -V. Pytest was clearly telling us that the -V option was being used elsewhere. But it was not clear about where the ‘used elsewhere’ was located. Further, while we knew what the error meant but could not understand why the error would […]