Endtest

Endtest

โ€บAll blog posts

All blog posts

  • 5 Myths About Codeless Automation
  • No-code test automation
  • Selenium vs Cypress
  • Endtest vs Ghost Inspector
  • Puppeteer vs Selenium
  • A Practical Guide for Finding Elements with Selenium
  • 8 Extremely Useful HTML Tricks
  • 8 Extremely Powerful JavaScript Hacks
  • Endtest vs Sauce Labs
  • Endtest vs BrowserStack
  • 10 Ways To Improve Your Automated Tests

5 Myths About Codeless Automation

December 11, 2020

Let's take a trip down memory lane and look back at some of the myths that were born in the early days of codeless test automation.

1. No flexibility

This was, by far, the most popular myth.

It dates back to the old test recorders from the early 2000s.

endtest sharks

And it's the main reason why some folks used to reinvent the wheel and write their own internal test frameworks a few years ago.

Those internal test frameworks were a nightmare to maintain and the ROI was terrible.

It might be difficult to find someone who still does that in the present.

But if you would ask them why, they might tell you that their scenarios are simply far too complex and they need functionalities such as:

  • If statements
  • Loops
  • Variables
  • Reusable functions
  • Concatenate different strings
  • Extract values from JSON objects
  • Extract values from arrays
  • Extract values from CSV files
  • Connect to databases and execute SQL queries
  • Send API requests
  • Chain together multiple API requests
  • Handle iframes, Shadow DOM, multiple browser tabs
  • Read and write cookies
  • Access the page source and the browser logs
  • Execute JavaScript code snippets

The truth is that Codeless Automation tools do support all of those functionalities.

At least Endtest does.

2. Editing is difficult

Another myth that dates back to the early 2000s.

If someone wanted to edit a recorded test, they had to record it again.

Things are different nowadays, editing is easy:

endtest edit test

This makes codeless tests more stable and easier to manage than classic Selenium Webdriver tests

If you can still find someone who believes that they need to record the entire test case again or edit the actual code if something changes, please let them know it's not 2005 anymore.

3. Collaboration is difficult

The old test recording tools were Desktop tools.

This means that anything you created was stored on your computer.

Syncing your work with your colleagues was a nightmare.

This led some folks to the following conclusion:

"We need to write code, because we need to put it in a git."

endtest collaboration

Fortunately, modern Codeless Automation tools are cloud solutions.

This means that anything you create is stored directly in the cloud and you can easily grant access to other team members, use versioning, branches and sync your work.

Endtest even offers an Automatic Backup functionality.

4. It's too expensive

In the early 2000s, due to a lack of knowledge and in an attempt to cut spendings, some teams or companies decided to use only open source solutions.

Not because they took an interest in the community and they wanted to add their contribution, but simply because open source solutions are free.

endtest open source

That principle can no longer be applied, because most modern tools are in the cloud.

If someone asks if a cloud solution is open source, it means that they're not aware of the differences between a library and a cloud solution.

Using a cloud solution helps a company save money, because they no longer have to build their own internal tool by stitching together different libraries.

Let's take a look at an example.

Company A and Company B decide that they need a video conferencing tool because they want to host webinars.

endtest webinar

After doing some research, Company A decides that they are going to use Zoom, paying $19 per month.

Company B wants to save money, so they look for open source options. They decide to use WebRTC, an open source project that allows you to build real-time communication apps.

Day 1:

Company A now has a stable video conferencing tool and they start hosting webinars.

Company B starts building their own video conferencing tool by stitching together WebRTC and other libraries.

6 months later:

Company A has already hosted an impressive number of webinars, without encountering issues.

Company B is still working on their own video conferencing tool, they assigned 3 Software Engineers to that project. It's almost ready, but it will take time until they'll have advanced features and there's no way of knowing if it will be reliable enough.

If you do the math, you'll see that Company B actually spent a lot more money compared to Company A, but they didn't get any return on their investment yet.

That's because those 3 Software Engineers have salaries, which are definitely more than $19 per month.

Company B also missed out on plenty of opportunities during those 6 months when they didn't host any webinars.

You can apply the same logic when comparing an open source library such as Selenium and a tool like Endtest.

5. Vendor lock-in

endtest webinar

Let's take a look at the definition:

Vendor lock-in, also known as proprietary lock-in or customer lock-in, makes a customer dependent on a vendor for products and services, unable to use another vendor without substantial switching costs.

endtest selenium

Modern legislation like GDPR and HIPAA makes it mandatory for vendors to provide flexible data migration options.

Your data is your data and you have the right to take it wherever you want.

Just make sure to review the Privacy Policy.

No-code test automation

November 8, 2020

1. What is no-code test automation?

Low-code and no-code refer to tools that allow users to build logic inside of software, or full applications, without having to write complex code.

Low/no-code development often features drag-and-drop interfaces, but not all low-code and no-code tools are used to build apps.

In the last years, we've seen more and more users building their automated tests by using no-code solutions such as Endtest.

2. Where did it come from?

This trend emerged when software teams began measuring the ROI of their work and started searching for ways to increase it.

A few years ago, building automated tests was a difficult and chaotic task, teams would attempt to build their own internal frameworks by stitching together multiple open source libraries.

In some cases, the outcome of these expensive and time-consuming endeavours was not a successful one.

These projects would often become increasingly difficult to maintain.

3. Why did most test automation projects fail?

The root cause seems to be related to bad decisions and a lack of vision.

The planning would not involve questions such as:

  1. How long would it take?
  2. How much would it cost us?
  3. What is the ROI?
  4. Are we reinventing the wheel?
  5. Is there a better way to do this?

Asking those questions before starting a test automation project is imperative.

The temptation to build an internal test automation solution from scratch by stitching together open source libraries would disappear, since it would become clear that the ROI for such an approach would be terrible.

While you may be tempted by the zero cost of an open source library such as Selenium, it's worth knowing that the time you consume writing code for those tests still translates into large spendings for your company.

Most of those internal test automation solutions would end up being "Frankenstein" projects, built and maintained by only 1-2 developers, with a very low adoption rate among the team.

These projects would often be abandoned after one of those developers would leave the company.

4. Why is no-code better?

A no-code testing tool allows you to build and execute your first automated tests in just a few minutes.

This means that you're getting something in return from Day 1.

The lack of complexity translates into a frictionless adoption of that tool in your team.

Non-technical members can start contributing and add their value to your team in new ways.

The no-code approach for automated testing is the only one that has a solid ROI.

5. Is no-code only for people who can't code?

No-code is for anyone who wants to be efficient and save time.

Just because you can build it, doesn't mean you have to.

For example, you could probably build your own video conferencing solution by using WebRTC, which is free and open source.

But it would take you a few months to build it and the successful outcome isn't a sure thing.

That endeavour would have a terrible ROI.

Using a video conferencing tool like Zoom would not be free, it would cost $19 per month.

But that price is significantly lower than what it would cost you to build your own video conferencing tool.

And you would be able to use it from Day 1.

6. What about vendor lock-in?

A vendor lock-in, also known as proprietary lock-in or customer lock-in, makes a customer dependent on a vendor for products and services, unable to use another vendor without substantial switching costs.

This seems to be one of the most common fears when it comes to adopting a no-code solution.

As long as data portability requirements are met, this risk does not exist.

Teams who hesitate to adopt proprietary solutions due to this fear may end up in a developer lock-in, with an overcomplicated solution which was built internally and which can only be maintained by 1 or 2 developers.

7. No scenario is too complex

No-code tools like Endtest include functionalities for using variables, if statements, loops and reusable components.

If something is easy to use, it doesn't mean that it automatically lacks flexibility.

If that would be true, all developers would have to write machine code instead of using programming languages.

Selenium vs Cypress

August 3, 2020

Let's compare Selenium and Cypress.

RequirementSeleniumCypress
Completely open-source and freeโœ…๐Ÿ”ฒ
Works with Chromeโœ…โœ…
Works with Firefoxโœ…โœ…
Works with Edgeโœ…๐Ÿ”ฒ
Works with Safariโœ…๐Ÿ”ฒ
Works with Internet Explorer 11โœ…๐Ÿ”ฒ
Works with multiple browser tabsโœ…๐Ÿ”ฒ
Works with asynchronous web pagesโœ…โœ…

1. Selenium

Selenium WebDriver is easy to use and there are plenty of resources available online.

It works with all major browsers and the WebDrivers are even maintained by the browser developers themselves.

And it can easily handle complex scenarios which involve iframes and multiple browser tabs.

There are also a number of libraries that are built as a wrapper on top of Selenium, such as NightwatchJS, WebdriverIO and CodeceptJS.

Personally, I would avoid using those libraries since it puts me at a higher risk of getting blocked by issues in their code, since they're not as well maintained as pure Selenium WebDriver.

Endtest is using Selenium to locate elements in Web Applications.

Selenium is just one of the many open-source components that we're using.


2. Cypress

Cypress is a npm package that can be used to create simple tests.

The cross-browser support isn't so comprehensive, but at least there is a beta version working on Firefox.

Dealing with iframes in Cypress requires a lot of hacks that don't always work.

Dealing with multiple browser tabs in Cypress is currently not possible.

The tests created with Cypress tend to be flaky and constantly require workarounds and hacks.

It is promoted as an open source library, but it has a paid product behind it (the Cypress Dashboard service).

Cypress invests a lot in Marketing and that has got them some attention in the last years.

Personally, I would not use it due to the severe limitations.

Conclusion

Selenium is definitely more powerful than Cypress.

The severe limitations of Cypress tend to remind us of the first version of Selenium from 2005, which relied more on JavaScript than webdrivers.

We did adapt the requirements from the comparison table as much as we could.

Endtest vs Ghost Inspector

August 2, 2020

Let's compare Endtest and Ghost Inspector.

RequirementEndtestGhost Inspector
Works for Web Applicationsโœ…โœ…
Works for Mobile Applicationsโœ…๐Ÿ”ฒ
Works with Chromeโœ…โœ…
Works with Firefoxโœ…โœ…
Works with Edgeโœ…๐Ÿ”ฒ
Works with Safariโœ…๐Ÿ”ฒ
Works with Internet Explorer 11โœ…๐Ÿ”ฒ
Cloud with browsers on Windows machinesโœ…๐Ÿ”ฒ
Cloud with browsers on macOS machinesโœ…๐Ÿ”ฒ
No-Code Technologyโœ…โœ…
Visual Testingโœ…โœ…
APIโœ…โœ…
Schedulerโœ…โœ…
Loopsโœ…๐Ÿ”ฒ
Live Customer Supportโœ…๐Ÿ”ฒ
Email Testingโœ…โœ…
Geolocationโœ…โœ…
Video recording of test executionsโœ…โœ…

1. Endtest

Endtest is the leading test automation vendor providing a complete software platform to help organizations efficiently build automated end-to-end tests for Web Applications and Mobile Applications.

You can execute your tests directly on the cross-browser cloud which has all the major browsers on Windows and macOS machines.


2. Ghost Inspector

Ghost Inspector is a product which allows you to record and execute tests for web applications.

Since the technology behind Ghost Inspector is CasperJS, that means that it can only run on Chrome and Firefox browsers.

Currently, there is no possibility to make it run on other browsers such as Safari and Internet Explorer 11.

Ghost Inspector provides a cloud grid with Chrome and Firefox browsers on Linux machines.

Another limitation is that tests will be automatically stopped if the execution takes more than 10 minutes.

Conclusion

Even if these 2 products might seem similar, there are significant differences between them.

Endtest definitely has more functionalities.

We adapted the requirements from the comparison table as much as we could.

Puppeteer vs Selenium

July 31, 2020

Puppeteer and Selenium are both popular, powerful and widely used solutions for automating web applications.

But which one should YOU use?

The answer depends on your specific needs.

Choosing the wrong option could delay or worse, sabotage your automated testing project.

I'll share my own opinion at the end of this article.

Here are some PROS and CONS for both of them.

Puppeteer

PROS

โ€ข Faster than Selenium

โ€ข Easy to install

โ€ข Written and maintained by the Google Chrome devs

CONS

โ€ข Works only with Chrome

โ€ข The only supported language is Node.js

Selenium

PROS โ€ข Works with most browsers

โ€ข Multi-language support

โ€ข Huge community of users

CONS

โ€ข Difficult to run on all browsers

โ€ข A bit slower than Puppeteer

To sum it up, Puppeteer is faster than Selenium, but it works only with Chrome, while Selenium works with Chrome, Firefox, Safari, Internet Explorer and Edge.

Now, for my opinion: both solutions are outdated and built with the narrow mindset of developers who refuse to see beyond their code.

It may sound lazy, but I believe that a solution for automated testing should be like a washing machine: it should give me enough flexibility to choose different inputs and settings, but it shouldn't make me pump the water with one hand and spin the drum with the other.

What both solutions are missing

โ€ข Video Recording functionality

โ€ข Self-Healing element locators

โ€ข Integrated Email Testing option

โ€ข Computer Vision functionalities

โ€ข Automatic Smart Waiting

โ€ข Structured results

Other issues with Selenium and Puppeteer:

โ€ข Difficult to upload files in a test

โ€ข Difficult to deal with iframes

โ€ข Difficult to integrate with your CI/CD system

โ€ข Difficult to configure Element Load Timeout

If you're looking for a better alternative, try Endtest.

It has Puppeteer's speed, it supports Selenium's browsers AND it has all the features that they're missing.



A Practical Guide for Finding Elements with Selenium

July 31, 2020

This article is for anyone who is using Selenium or Endtest and wants to know the best ways to find elements.

The key here is to find the most stable and reliable locator for each element.

Read More

8 Extremely Useful HTML Tricks

July 31, 2020

HTML has plenty of practical secrets that might come in handy.

But I do want to make sure that the site is working on Internet Explorer and other browsers.

You can use use Endtest to create automated tests and execute them on the cross-browser cloud.

Below are 8 extremely useful HTML tricks.

1. The <figure> tag

This can be used to mark up a photo.

The <figure> element can also contain a <figcaption>:

<figure>
  <img src="https://thepracticaldev.s3.amazonaws.com/i/g84et7kjgp2phal89140.jpg" alt="Swat Kats" style="width:100%">
  <figcaption>Fig.1 - SWAT Kats</figcaption>
</figure>

And this is what it would look like.

2. The <video> tag

This allows you to embed a media player for video playback.

For example, you can upload your video on AWS S3 and use the <video> tag to embed it on your website.

Using YouTube for that might come off as unprofessional.

And Vimeo doesn't allow you to embed your videos without paying. โ˜น๏ธ

You can specify certain attributes, such as width, height, autoplay, loop, controls, etc.



And this is what it would look like.

You can also embed a live stream using getUserMedia() or WebRTC

3. The <picture> tag

This tag helps you display images in a responsive manner, by showing an alternative image version for smaller viewports.

It needs to contain one or more <source> tags and one <img> tag.

The <img> tag will be used only if the viewport doesn't match any of the <source> tags or if the browser does not support it.

<picture>
   <source media="(min-width: 968px)" srcset="large_img.jpg">
   <source media="(min-width: 360px)" srcset="small_img.jpg">
   <img src="default_img.jpg" alt="avatar">
</picture>

4. The <progress> tag

The <progress> tag represents the progress of a task.

The <progress> tag should not be confused with the <meter> tag (which represents a gauge).

<progress value="63" max="100">
</progress>

And this is what it would look like.

5. The <meter> tag

You can use the meter element to measure data within a given range (a gauge).

This can be achieved with min and max values or with a percentage.

<meter value="2" min="0" max="10">2 out of 10</meter>
<meter value="0.6">60%</meter>

And this is what they would look like.

6. The <map> tag

The <map> tag is used to define a client-side image-map.

An image-map is an image with clickable areas.

All you have to do is mention the X and Y coordinates in the elements from the <map>.

This means that you create a map of our Solar System and define areas for each planet and take the visitors to a separate page for each planet they click on.

<img src="solar_system.png" width="500" height="300" alt="Planets" usemap="#planetmap">

<map name="planetmap">
  <area shape="rect" coords="0,0,52,92" href="earth.htm" alt="Earth">
  <area shape="circle" coords="60,48,5" href="mars.htm" alt="Mars">
  <area shape="circle" coords="135,48,12" href="saturn.htm" alt="Saturn">
</map>

7. The contenteditable attribute

This attribute specifies whether the content of an element is editable or not.

<p contenteditable="true">This is an editable paragraph.</p>

And this is what it would look like.

8. Input suggestions

<input type="text" list="planets">
<datalist id="planets">
    <option value="Mercury"></option>
    <option value="Venus"></option>
    <option value="Earth"></option>
    <option value="Mars"></option>
    <option value="Jupiter"></option>
    <option value="Saturn"></option>
    <option value="Uranus"></option>
    <option value="Neptune"></option>
</datalist>

Here it is.

I hope you don't mind that I didn't add any styling.

I prefer to keep things as vanilla as possible in my examples.

Closing thoughts

I think it's really cool that you're looking for HTML tricks, but are you sure your Web Application is working correctly on all browsers and devices?

You can use Endtest to quickly build Automated Tests and execute them on the cross-browser cloud.

You don't even have to code in order to use it.

Check out the docs.

8 Extremely Powerful JavaScript Hacks

July 31, 2020

I love to be efficient.

But users don't care about my optimized code if the site isn't working in their Internet Explorer 11 browser.

You can use Endtest to build automated tests and execute them on the cross-browser cloud.

Below are 8 extremely powerful JavaScript hacks.

1. Replace All

We know that the string.replace() function replaces only the first occurrence.

You can replace all the occurrences by adding /g at the end of the regex.

var example = "potato potato";
console.log(example.replace(/pot/, "tom"));
// "tomato potato"
console.log(example.replace(/pot/g, "tom"));
// "tomato tomato"

2. Extract Unique Values

We can create a new array only with the unique values by using the Set object and the Spread operator.

var entries = [1, 2, 2, 3, 4, 5, 6, 6, 7, 7, 8, 4, 2, 1]
var unique_entries = [...new Set(entries)];
console.log(unique_entries);
// [1, 2, 3, 4, 5, 6, 7, 8]

3. Convert number to string

We just have to use the concatenation operator with an empty set of quotation marks.

var converted_number = 5 + "";
console.log(converted_number);
// 5
console.log(typeof converted_number);
// string

4. Convert string to number

All we need is the + operator.

Be careful with this one since it only works with 'string numbers'.

the_string = "123";
console.log(+the_string);
// 123

the_string = "hello";
console.log(+the_string);
// NaN

5. Shuffle elements from array

Every day I'm shufflin'

var my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9];
console.log(my_list.sort(function() {
    return Math.random() - 0.5
}));
// [4, 8, 2, 9, 1, 3, 6, 5, 7]

6. Flatten multidimensional array

Simply by using the Spread operator.

var entries = [1, [2, 5], [6, 7], 9];
var flat_entries = [].concat(...entries);
// [1, 2, 5, 6, 7, 9]

7. Short Circuit Conditionals

Let's take this example:

if (available) {
    addToCart();
}

And shorten it by simply using the variable together with the function:

available && addToCart()

8. Dynamic Property Names

I always thought that I first had to declare an object before being able to assign a dynamic property.

const dynamic = 'flavour';
var item = {
    name: 'Coke',
    [dynamic]: 'Cherry'
}
console.log(item);
// { name: "Coke", flavour: "Cherry" }

Conclusion

I think it's really cool that you're looking for JavaScript hacks, but are you sure your Web Application is working correctly on all browsers and devices?

You can use Endtest to quickly create Automated Tests and execute them on the cross-browser cloud.

You don't even have to code in order to use it.

Check out the docs.

Endtest vs Sauce Labs

July 30, 2020

Let's compare Endtest and Sauce Labs.

RequirementEndtestSauce Labs
Works for Web Applicationsโœ…โœ…
Works for Mobile Applicationsโœ…โœ…
Cloud with browsers on Windows machinesโœ…โœ…
Cloud with browsers on macOS machinesโœ…โœ…
No-Code Technologyโœ…๐Ÿ”ฒ
Visual Testingโœ…โœ…
APIโœ…โœ…
Schedulerโœ…๐Ÿ”ฒ
Live Customer Supportโœ…๐Ÿ”ฒ
Email Testingโœ…๐Ÿ”ฒ
Geolocationโœ…โœ…
Video recording of test executionsโœ…โœ…

1. Endtest

Endtest is a cloud platform that allows you to create, manage and run Automated Tests for Web Applications and Native Mobile Apps (Android & iOS), without having to write any code.


2. Sauce Labs

Sauce Labs is a service that offers you a list of browsers and mobile devices to execute your Selenium and Appium tests.

It simply provides the browsers and mobile devices, you still have to build your internal test automation framework by writing code.

Conclusion

It doesn't actually seem fair to compare these 2 products, since they provide different functionalities.

We adapted the requirements from the comparison table as much as we could.

The target audience for these 2 products is similar, but still different.

Endtest was built for teams who want to build tests faster, without writing any code.

Sauce Labs is mostly for teams who want to build their own internal test automation framework.

Endtest vs BrowserStack

July 30, 2020

Let's compare Endtest and BrowserStack.

RequirementEndtestBrowserStack
Works for Web Applicationsโœ…โœ…
Works for Mobile Applicationsโœ…โœ…
Cloud with browsers on Windows machinesโœ…โœ…
Cloud with browsers on macOS machinesโœ…โœ…
No-Code Technologyโœ…๐Ÿ”ฒ
Visual Testingโœ…โœ…
APIโœ…โœ…
Schedulerโœ…๐Ÿ”ฒ
Live Customer Supportโœ…๐Ÿ”ฒ
Email Testingโœ…๐Ÿ”ฒ
Geolocationโœ…โœ…
Video recording of test executionsโœ…โœ…

1. Endtest

Endtest is a cloud platform that allows you to create, manage and run Automated Tests for Web Applications and Native Mobile Apps (Android & iOS), without having to write any code.


2. BrowserStack

BrowserStack is a service that offers you a list of browsers and mobile devices to execute your Selenium and Appium tests.

It simply provides the browsers and mobile devices, you still have to build your internal test automation framework by writing code.

Conclusion

It doesn't actually seem fair to compare these 2 products, since they provide different functionalities.

We adapted the requirements from the comparison table as much as we could.

The target audience for these 2 products is similar, but still different.

Endtest was built for teams who want to build tests faster, without writing any code.

BrowserStack is mostly for teams who want to build their own internal test automation tool.

Next โ†’
Copyright ยฉ 2020 Endtest