With whom do you prefer to work?

I like to work with managers who get their hands dirty to have something done, instead of asking someone to do the work. Managers that exist to manage people shouldn’t be necessary for mature and autonomous teams. Think about it. If there’s no one to perform the work, what’s the point of having a people manager? In the end, there’s no one to manage. On the other hand, if there’s no manager, but the people needed to perform the work are there, it can still happen. I imagine that people managers won’t like reading this post (if they’re ok being…


How side-projects help me practice the software development craft

Before writing this content, I was reading about software composition, and I had this insight.

I was reading the Elements of JavaScript Style chapter of Eric Elliott’s Composing Software book, and then I thought, how lucky I am to keep open-source projects, such as the protractor-helper, or my website, to name a few.

Such projects allow me to put into practice new knowledge acquired day-after-day, during study hours, to be ready when similar problems arise in work projects.

When the protractor-helper started, all the code was in a single file. Nowadays, the project is better modularized, tested, as well as…


🥳 Screenshot comparison tests have never been so easy 🎉

Automated visual regression tests add a new validation layer in the software development life cycle, ensuring that when application changes break its visual appearance, you will have a quick feedback to fix it before your users even notice.

In this course, you will work on a project of visual regression testing, exploring the functionalities of BackstopJS for the creation of automated tests.

The course is available on Udemy. Check it out and learn how to create screenshot comparison tests in an easy way!

I hope you like the course, and I wish you a good testing journey! 👋


Now with type definitions in the functions signatures

It is with great pleasure that I present you with the newest version of the protractor-helper library, which now provides a better experience for its users with type definitions in the functions’ signatures.

As of version 4.1.1, if you use the Visual Studio Code editor (or some other with TypeScript support), after importing the library into your test file, when you type something like helper.click(), you will be presented with the parameters that such a function expects, what types such parameters should have, which are mandatory and which are optional, in addition to the return of each function.

Let’s see…


Learn how to optimize Cypress tests using API calls

I’m happy to announce the launch of a new course on Udemy.

Test automation with Cypress (intermediate)

In this course, you will learn:

  • How to set up the application under test (AUT) using Docker
  • How to set up the test automation project with Cypress
  • How to create basic GUI (graphical user interface) tests with Cypress
  • How to create intermediate GUI tests with Cypress
  • API testing with Cypress
  • How to create tests in an optimized way using API calls
  • How to create tests that interact with the AUT via the operating system level
  • How to run all tests in both interactive…


Development, test, performance, staging, canary, production…

I have a theory (and some experience) that having fewer environments in the software ecosystem is better than having more of them.

It’s a common practice in many software projects to have:

  • The development environment — also known as the developer’s computer
  • The development integrated environment — a remote environment used by developers to have their code integrated so that they can check if they broke the code of someone else, or if someone else broke their code
  • The test environments — environments used for manual and/or automated tests
  • The staging environment — used for acceptance testing before pushing new…


Basic course of test automation with Cypress

In this course, you will learn:

  • How to install and initialize a test automation project with Cypress
  • How to create and run end-to-end tests interacting with the most common elements found in web applications
  • How to make assertions of expected results
  • How to create custom commands
  • And finally, how to run tests in both interactive and headless mode

I hope you like the course and your feedback is more than welcome.

Until next time, and happy testing! 👋


Party mode!

Get to know a bit of the history behind protractor-helper and its new version

If you automate or intend to automate tests of web applications with the Protractor framework, protractor-helper will help you on making them reliable. It does that by using the ExpectedConditions class, from Protractor, to ensure that the test scripts will only interact with elements, or run assertions on them, when such elements are in the correct state, like visible, clickable, present, etc.

Automated tests of GUI (graphical user interface) are commonly seen as flaky. They fail when they should not, and so they lose credibility.

A test that fails when there’s nothing wrong with the application under test is what…


My “2 cents” of some open source tools that I have used or have been using to ensure quality in software development projects

JavaScript code

In this post, I will talk about my experiences with test automation using tools that support JavaScript. In the first part of the post, I will talk about tools for test automation of the graphical user interface or GUI. In the second part of the post, I will talk about tools for integration test automation or API testing. In the third part of the post, I will talk about tools for unit testing. And in the last part, I’ll talk about tools for static code analysis.

PART 1 — AUTOMATED TESTS OF GRAPHICAL USER INTERFACE (GUI)

Selenium Webdriver

My experience with the JavaScript version of Selenium Webdriver is quite satisfactory with regards…


Some examples of things we have to avoid if we are looking for efficient continuous integration

Homer Simpson making another mistake

Have you already asked yourself why continuous integration is not providing value to your project or organization, even if you have all the tools and infrastructure needed for it?

Maybe the problem is in other stages of the software development life cycle, or in the process and the way the team works.

Because of this, we need to understand what’s the primary goal of this software engineering practice so that we can comprehend what to expect from it.

The purpose of continuous integration is to reduce the time between the development and the release of a working software update in…

Walmyr Filho

QA Engineer, clean coder, blogger, writer, YouTuber, online teacher, mentor, member of technology communities and passionate for good music 🎶 and skateboarding

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store