From b07a5e97184c2bf5446a8eef5c0dfe53018e137e Mon Sep 17 00:00:00 2001 From: Anton Angelov Date: Tue, 30 Aug 2022 14:42:56 +0300 Subject: [PATCH 1/4] add new blog post about BELLATRIX test automation framework --- .../devPortalGraph1.png | Bin 0 -> 31406 bytes .../grid-html-example.png | Bin 0 -> 28985 bytes .../index.md | 234 ++++++++++++++++++ .../qtest-dynamic-test-case.png | Bin 0 -> 128274 bytes .../sampleinvoice.png | Bin 0 -> 67436 bytes 5 files changed, 234 insertions(+) create mode 100644 website_and_docs/content/blog/2022/bellatrix-test-automation-framework/devPortalGraph1.png create mode 100644 website_and_docs/content/blog/2022/bellatrix-test-automation-framework/grid-html-example.png create mode 100644 website_and_docs/content/blog/2022/bellatrix-test-automation-framework/index.md create mode 100644 website_and_docs/content/blog/2022/bellatrix-test-automation-framework/qtest-dynamic-test-case.png create mode 100644 website_and_docs/content/blog/2022/bellatrix-test-automation-framework/sampleinvoice.png diff --git a/website_and_docs/content/blog/2022/bellatrix-test-automation-framework/devPortalGraph1.png b/website_and_docs/content/blog/2022/bellatrix-test-automation-framework/devPortalGraph1.png new file mode 100644 index 0000000000000000000000000000000000000000..837da4dea99650fba6a4e1e49b0d2ad30fd979ad GIT binary patch literal 31406 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 literal 0 HcmV?d00001 diff --git a/website_and_docs/content/blog/2022/bellatrix-test-automation-framework/grid-html-example.png b/website_and_docs/content/blog/2022/bellatrix-test-automation-framework/grid-html-example.png new file mode 100644 index 0000000000000000000000000000000000000000..66ea78744bae0157d3411386c8385c2d0c2cd8b5 GIT binary patch literal 28985 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 qdVx}`e`5Q;Q + Customize and extend our cross-platform .NET 6 and JAVA test automation framework to perfectly fit your needs. + Start on top of hundreds of best practice features and integrations. +--- +Over the last decade, a large ecosystem of Open Source projects has sprouted up around Selenium. Selenium is often used for automating web applications for testing purposes, but it does not include a testing framework. +Nowadays, Selenium Ecosystem initiatives try to give popularity to popular open-source test automation frameworks maintained by people outside of core Selenium maintainers. +One of these frameworks is BELLATRIX, developed and maintained by [Automate The Planet](https://bellatrix.solutions/about/) and invented by [Anton Angelov](https://www.linkedin.com/in/angelovstanton/). It has two versions - C# and Java. +Before giving you more details about the framework, let's briefly define what a test automation framework is. + +## What Is a Test Automation Framework? ## +### Definition Software Framework ### +A software framework (or just framework) is an abstraction in which common code providing generic functionality can be selectively overridden or specialized by user code providing specific functionality. Frameworks are a special case of software libraries in that they are reusable abstractions of code wrapped in a well-defined API, yet they contain some key distinguishing features that separate them from normal libraries. + +Software frameworks have these distinguishing features that separate them from libraries: +- Inversion of Control - in a framework, unlike in libraries or normal user applications, the overall program’s flow of control is not dictated by the caller, but by the framework. +- Default Behavior a framework has a default behavior. This default behavior must actually be some useful behavior and not a series of no-ops. +- Extensibility a framework can be extended by the user usually by selective overriding or specialized by user code providing specific functionality. +- Non-modifiable Framework Code the framework code, in general, is not allowed to be modified. Users can extend the framework, but not modify its code. + +### Definition Test Framework ### +A sub-type of frameworks providing generic code for testing different aspects of our applications- UI, API, security, performance and many other. + +Many people refer to Selenium WebDriver as a test automation framework but cannot be more wrong. Here is the official definition - "*Selenium automates browsers. That’s it! What you do with that power is entirely up to you. Primarily, it is for automating web applications for testing purposes, but is certainly not limited to just that. Boring web-based administration tasks can (and should!) be automated as well.*" So, Selenium WebDriver is mostly known as the standard for web automation testing but is actually a tool for controlling browsers that we later use in our software libraries and frameworks to write automated tests. +A framework can be based on several libraries implementing several APIs, but unlike the normal use of an API, the access to the behavior built into the framework is mediated by extending its content with new classes plugged into the framework itself. Moreover, the overall program flow of control can be out of the control of the caller and in the hands of the framework by inversion of control or a similar mechanism. + +#### Definition Test Automation Framework ### +Various guidelines, coding standards, concepts, processes, practices, project hierarchies, modularity, etc. to support automated testing. The user can follow these guidelines while automating application to take advantages of various productive results. + +### BELLATRIX Test Automation Framework ### +The first version of **[BELLATRIX](https://bellatrix.solutions/)** appeared on 26 December 2017. It was available only for C# initially but written on new back then .NET Core, allowing the framework to be used on all major operating systems (cross-platform). +One huge advantage of BELLATRIX is cross-technology readiness. It allows you to write tests for different technologies such as Web, Mobile, Desktop, and API. For me, this also includes a similar API. In BELLATRIX, we strive the API for different modules to be as identical as possible. Here by API, I don't mean web API. + +### Definition API ### +API or application programming interface is a set of functions and procedures that allow the creation of applications which access the features or data of an operating system, application, or other service. A good API makes it easier to develop a computer program by providing all the building blocks, which are then put together by the programmer. + +###Multiple Test Environments Configuration### +Every aspect of the framework can be controlled via a rich JSON configuration designed to work for many test environments. Here is just a short part responsible for controlling web execution: + +```json +"webSettings": { + "isParallelExecutionEnabled": "false", + "artificialDelayBeforeAction": "0", + "automaticallyScrollToVisible": "false", + "waitUntilReadyOnElementFound": "false", + "waitForAngular": "false", + "shouldHighlightElements": "true", + "shouldCaptureHttpTraffic": "false", + "pathToSslCertificate": "path", + "shouldCheckForJavaScriptErrors": "false", + "timeoutSettings": { + "elementWaitTimeout": "30", + "pageLoadTimeout": "30", + "scriptTimeout": "1", + "waitForAjaxTimeout": "30", + "sleepInterval": "1", + "waitUntilReadyTimeout": "30", + "waitForJavaScriptAnimationsTimeout": "30", + "waitForAngularTimeout": "30", + "waitForPartialUrl": "30", + "validationsTimeout": "30", + "elementToBeVisibleTimeout": "30", + "elementToExistTimeout": "30", + "elementToNotExistTimeout": "30", + "elementToBeClickableTimeout": "30", + "elementNotToBeVisibleTimeout": "30", + "elementToHaveContentTimeout": "15" + }, +``` + +###Customization### + +One of the hardest things to develop is to allow these generic frameworks to be extendable and customizable. The whole point of creating a shared library is to be used by multiple teams across the company. However, the different teams work in different contexts. They may have to test a little bit different things. So, the library code as is may not be working out of the box for them. Thus, the engineers should be able to customize some parts to fit their needs. +Knowing how essential customization is, we built several ways to enable it. The major one is about [**writing your own plug-ins**](https://bellatrix.solutions/features/web/extend-the-framework-to-fit-your-needs/). + +###Test Reliability### + +One of the biggest problems in test automation is handling timeouts and performing actions on elements that may not be on the page right now. In the WebDriver world, you have to constantly worry about how to solve these problems with an implicit wait, explicit wait, or WebDriverWait class. BELLATRIX hides the complexity of searching and [**waiting for elements**](https://bellatrix.solutions/features/web/boost-test-reliability/). Furthermore, when you perform an action or assertion against an element, we guarantee that once returned is there. + +A significant part of your tests is the assertions - checking whether some conditions are met. For example, this might be checking whether some text is shown or whether some button has been disabled. However, this often doesn’t happen immediately. In the era of web pages with heavy JavaScript usage, most things happen asynchronously. +To handle such scenarios, we created elements Validate methods. They internally handle the whole complexity of waiting for some condition to happen. + +```csharp +updateCart.ValidateIsDisabled(); +``` +Waits for the message alert to get disabled. +```csharp +messageAlert.ValidateIsNotVisible(); +``` +Wait for message alert to disappear. +```csharp +totalSpan.ValidateInnerTextIs("120.00€", timeout: 30, sleepInterval: 2); +``` +You can even fine-tune the timeouts. + +###Complex Controls### + +BELLATRIX gives you API for easing the work with **[HTML tables and grids](https://docs.bellatrix.solutions/web-automation/complex-components/)**. +{{< figure src="grid-html-example.png" class="img-responsive w-50" >}} +Here is an example for asserting grid cells: + +```csharp +[Test] +public void AssertGridCells() +{ + TestGrid.ForEachCell(cell => cell.AssertFontSize("14px")); + TestGrid.GetCell("Firstname", 1).ValidateInnerTextIs("Mary"); + TestGrid.GetCell(0, 1).ValidateInnerTextIs("John"); + TestGrid.GetCell(cell => cell.PersonalEmail, 1).ValidateInnerTextIs("mary@hotmail.com"); + ComponentsList matchingCells = TestGrid.GetCells(cell => cell.InnerText.StartsWith('J')); + Assert.AreEqual(2, matchingCells.Count()); + TestGrid.GetCell("Email Business", 0).ValidateInnerTextIs("jdoe@corp.com"); + var firstRowEmail = TestGrid.GetRow(0).GetCell("Email Personal"); + TestGrid.GetCell("Actions", 0).As