Skip to main content

New Feature Announcement - Virtual Threads

ยท 2 min read
Mustafa Agamy
SHAFT_Engine maintainer

We're starting off 2024 with a huge announcement!

SHAFT_Engine

๐Ÿค

Oracle

- The future of automation frameworks is here, and it's all about working smarter, not harder.โ€‹

- SHAFT_ENGINE, your trusty automation solution, just got a major upgrade with virtual threads, a clever trick that makes it more efficient and helpful than ever.โ€‹

- What is a Virtual Thread?โ€‹

  • Virtual-Threads, introduced with Java 21 are a new way to handle multiple tasks concurrently within a single program or application. They're the new java way for asynchronous operations.
  • Think of it like hiring a whole crew of tiny helpers. While one tractor's plowing, another can check the soil, and another can keep an eye on the weather.
  • These lightweight assistants don't need fancy equipment or guzzle up resources, meaning SHAFT_ENGINE can now handle a ton more tasks without breaking a sweat.

Now let's think of test automation. In automating a registration form, envision employing a crew of virtual threads as tiny helpers :โ€‹

  • Rather than idly waiting for the entire site to load, each virtual thread can be assigned specific tasks as soon as the relevant elements become available. For instance, one thread focuses on inputting the username, another simultaneously handles the email input, and yet another sets the password. This parallel execution optimizes efficiency, ensures prompt responsiveness to dynamically changing elements, and efficiently utilizes resources.
  • As the crew of virtual threads collaborates seamlessly, the registration form is filled and submitted swiftly, providing a more agile and responsive automation process compared to traditional sequential approaches.

- Save your execution Time :โ€‹

  • That's not all, SHAFT_ENGINE utilities the Virtual Threads for Engine launch and configuration which will make your overall experience a lot faster and swifter.

Bing AI framework comparison

ยท 2 min read
Mohab Mohie
SHAFT_Engine creator

We asked Bing AI to compare SHAFT against some of the well known test automation options, here's what it had to say:

Sure! Here is an expanded comparison between SHAFT_Engine, native Selenium WebDriver, Cypress and Microsoft Playwright in a tabular format:

FeatureSHAFT_EngineSelenium WebDriverCypressMicrosoft Playwright
Web GUI testingYesYesYesYes
Mobile testingYesNo (Appium required)NoNo
API testingYesNoYesNo
CLI testingYesNoNoNo
Database testingYesNoNoNo
Built-in test synchronizationYesNoYesYes
Built-in logging and reportingYesNoYesYes
Integration with third-party tools (e.g. Jira, Xray, Browserstack)YesNoLimitedLimited
Unlimited access to underlying frameworks (e.g. Selenium, Appium, RestAssured)YesN/AN/AN/A
Cross-browser testing supportYes (via Selenium)YesLimited (Chrome, Firefox, Edge)Yes (Chromium, Webkit, Firefox)
Parallel test execution supportYes (via TestNG)Yes (via TestNG or JUnit)YesYes
Language supportJava onlyMultiple languages (Java, Python, C#, Ruby, JavaScript)JavaScript onlyMultiple languages (JavaScript, Java, Python, .NET C#)
Open-sourceYesYesYesYes
Community support and resourcesLimited compared to Selenium WebDriver and CypressExtensiveExtensiveGrowing
User guideAvailableAvailableAvailableAvailable

What do you think? Is SHAFT the better option?

New release announcement (7.1.20230309)

ยท 2 min read
Mohab Mohie
SHAFT_Engine creator

Release highlights:โ€‹

Technical Details:โ€‹

  • SHAFT has always boasted top-notch reliability, but this sometimes comes at the cost of performance. In this release we made a major change to the way we handle "Type" which is one of the most commonly used and also one of the slowest actions.
  • Previously SHAFT would perform the following Selenium WebDriver calls:
    • Get Element Accessible Name (for reporting)
    • Get Current Element Text (to learn how this element stores its text and to learn the initial text if any)
    • Get Current Element textContent (to learn how this element stores its text and to learn the initial text if any)
    • Get Current Element Value (to learn how this element stores its text and to learn the initial text if any)
    • Clear (in case the element text wasn't empty)
    • Send Keys (to do the actual typing)
    • Get text using the successful text identification strategy (to validate that the text was typed correctly. if SHAFT ws able to find out which method out of the above three to use it will use it, else it will do all three calls again)
  • And inside each call, SHAFT would go into a fluent wait where it calls:
    • findElement
    • findElements
  • This means that SHAFT did 21+ webdriver calls!
  • Starting this version SHAFT will cut that number down to just 3 webdriver calls while maintaining the full functionality.
  • Using jsoup SHAFT will capture the entire HTML of the target webelement, and will then be able to uery it for the text/textContent/Value as need to clear and validate successfully typing.
  • SHAFT will also grab all element information (including the WebElement object) once, and will use the WebElement object directly (which is much faster than finding the element again each time) but if the engine faces a WebDriverException (like StaleElementException) the engine will go into a fluent wait to find and update the element reference.
  • We tested this major change thoroughly by running around 1700 E2E Test scenarios across different platforms, so we're confident it's stable.
  • In following releases we will rollout this approach to all our element actions, and next on the list we have "Click()" which is the second most used action per our analysis.

Dear SHAFT users, we need your support!

ยท One min read
Mohab Mohie
SHAFT_Engine creator

SHAFT is undergoing some major changes in its steering committee and we want to ensure that we align our strategies to what you guys really need!

SHAFT_Engine has always been (and will continue to be) a community driven project, made by Testers for Testers, and our mission was always to add value, remove redundancy, and help Software Engineers in Test focus on the exciting and non-repetitive parts of their work. For that we need your support to pinpoint and prioritize the features that you're using, and the features that you'd like to see in the near future.

Join us, become an honorary member of the new SHAFT_Engine Technical Leadership Committee by filling out this short survey, and watch your name shine as an honorary member on the dedicated page that we'll create on our official user guide!

Join us now!โ€‹

New Feature Announcement - Self-managed Appium Execution

ยท One min read
Mohab Mohie
SHAFT_Engine creator

A new Major feature approaches!

Selenium WebDriver ๐Ÿค Appium

What is self-managed appium execution?โ€‹

  • One of the common challenges for mobile application test automation is achieving and maintaining a proper testing environment.
  • A Testing environment consists of several elements; Android SDK CLI tools, Android System Image, Android Emulator, Support for Hardware acceleration, NPM, Appium 2.x server, drivers and plugins.
  • SHAFT will now download, and setup your testing environment.
  • SHAFT will also maintain everything in your environment to ensure that it's all up-to-date.
  • SHAFT will then initialize the Emulator, initialize the Appium server, and synchronize everything before starting test execution.

Watch the demo and explore the code โฎŠโ€‹

Selenium Ecosystem

ยท 3 min read
Mohab Mohie
SHAFT_Engine creator

We're starting off 2023 with a huge announcement!

SHAFT_Engine ๐Ÿค Selenium WebDriver

What is the Selenium Ecosystem?โ€‹

  • Over the last decade, a large ecosystem of Open Source projects have sprouted up around Selenium.
  • The Selenium Ecosystem attempts to capture some of those projects that make use of Selenium WebDriver as a central part of what they do.
  • It consists of a number of drivers, bindings, plugins, and frameworks created and maintained by third parties.

What are some other members of the Selenium Ecosystem?โ€‹

Why use a framework that's part of the Selenium Ecosystem?โ€‹

  • These projects are developed, and maintained by third parties who dedicate their time and efforts to complement the solid infrastructure provided by Selenium WebDriver; the undisputed market leader for test automation since its inception.
  • They are very mature with many contributors and many users.
  • They are powered by Selenium WebDriver, which guarantees the widest and most mature user-base versus other competitors.

Why use SHAFT_Engine?โ€‹

  • In its seventh year of development now and has accumulated 20 more contributors over the years.
  • One of the largest open source projects in the MEA region.
  • Has several tens of thousands downloads, and is being used by 18+ organizations (that we know of) to drive their automation efforts.
  • Powered by Selenium, Appium, RestAssured, and other best-in-class automation frameworks, SHAFT supports Web/Mobile/API/CLI/DB/Desktop test automation.
  • Offers excellent business-centric reporting with automated evidences (screenshots, videos, attachments) and logs.
  • Out-of-the-box simple test data management with secure encryption support.
  • Supports Local, remote, unattended, sequential, parallel, and containerized test execution.
  • Built-in test synchronization and error handling.
  • Built-in third party integrations with Jira, Xray, BrowserStack, and Applitools Eyes.
  • AI-powered Element Identification, visual checkpoints, and self-healing tests.
  • Element Locator Builder with full support for Selenium 4 Relative Locators.
  • Fluent actions and validations library.
  • And the list goes on...

What does being a member of the Selenium Ecosystem mean for SHAFT_Engine?โ€‹

  • It means that SHAFT_Engine is now one of 13 high-level frameworks that are built on top of Selenium WebDriver and have officially joined the ecosystem.
  • It will gain more visibility and more community support.
  • And our core maintainers will continue to remain close to the Selenium Technical Leadership committee, ensuring that SHAFT remains ahead of the curve and always aligned to the latest Selenium WebDriver has to offer.

In summary, we thank you for your support over the past 6 years, and we promise to continue to offer you a fully-featured best-in-class reliabie, consistent, secure, and fast Test Automation Solution.

Welcome

ยท One min read
Mohab Mohie
SHAFT_Engine creator

SHAFT Engine

Why start a blog?โ€‹

SHAFT_Engine has been long running for over 7 years with thousands of users across hundreds of projects.

Our intention is to start using Blog Posts like this one, to communicate for new releases, announcements and other important updates!

So Stay Tuned ๐Ÿ˜‰