Comunidad Free Range Testers

A partir de $0/ mes Prueba gratuita de 10 días
El hub principal donde la comunidad Free Range se junta a hablar de Testing, Software y Calidad.

Buenas a todos

Que tal como están, Soy Juan Felipe de Colombia, mas exactamente de la ciudad de Cúcuta, compro la subscripción por que quiero dar un salto en mi nivel como QA estoy trabajando para una empresa local como Analista QA Jr, tengo 1 año de experiencia, ya había visto varios videos de Pato y me parecieron muy interesantes, así que voy a probar los cursos como me va, espero aprender mucho, de momento voy a dar un repaso a los fundamentales del testing y la visión que se tiene de un tester y luego pienso seguir con el de programación para testers

Muchas gracias

Pato Free Range Testers
9 de feb

Un placer tenerte en la comunidad Juan! Qué país lindo Colombia 🇨🇴!!! Te invito a que te sumes al Discord de la comunidad y te presentes ahí también y, por qué no, compartas alguna foto de tus tierras!

Gracias Pato!!

Yo tomé el curso de Java, Selenium y Cucumber hace un año atras y ahora estoy trabajando como QA Automation, me ayudó a dar el salto en mi carrera! Ahora me sumo a la membresía para tomar los cursos avanzados para seguir creciendo!!
Mil gracias <3

Pato Free Range Testers
15 de dic de 2025

Hola Pau! Vos por ahí no te das cuenta del otro lado, pero me pone SUPER contento cuando me cuentan que pegan mejores puestos o que los ayudé de alguna forma! Gracias a vos por aprender conmigo!

Saludo!

Hola, hoy estoy invirtiendo aquí porque todos los cursos suenan interesantísimos, así que ojalá entienda todo y me ayude a crecer un poco más en mi carrera!

Pato Free Range Testers
21 de nov de 2025

Bienvenido Seba! Si hay algo de lo que me siento muy contento es de la comunidad que tenemos. Te recomiendo pasar por el Discord también que hay muchas charlas interesantes ahí también.

Saludos a todos.

Saludos, y hoy empezaré con la academia de Free Ranger Testers y es un placer. Aprovecharé al máximo cada enseñanza y daré con todo para aprender al maximo. 💪🔥

Pato Free Range Testers
11 de nov de 2025

Un gustazo tenerte por acá Iván! Espero que te sea de provecho todo lo que hago :)

Popup de cookies y cómo manejarlos en Playwright

En multitud de páginas sobre las que hagamos automation testing, tendrán el famoso y 'amigable' popup de aceptar cookies.

Aplicando POM a nuestro código, no nos será difícil localizar el botón de 'Aceptar cookies' y seguir con los test automatizados que teníamos previstos... Pero, muchas veces tendremos el siguiente error al correr nuestros tests:

Esto es debido a que gracias a nuestro 'querido' popup, la página pierde el contexto actual y se interpreta como que se ha cerrado, y por lo tanto, no se puede continuar con la ejecución de los tests.

Esto lo solucionamos en dos pasos:

1.- En el POM que tengamos creado. Ponemos el atributo 'page' como PUBLICO:

2.- En la página donde tengamos los tests, pasar SIEMPRE el parámetro '{page}'

El código de la función de aceptar cookies en el POM sería por ejemplo el siguiente:

async accepXCookies(){

await expect(this.XCookiesButton).toBeVisible();

return this.XCookiesButton.click();

}

Por último, recordad que según la calidad de la conexión que tengamos...el 'bendito' popup tardará más o menos tiempo en aparecer... Podemos jugar con {timeout: x} pero en mi opinión, no es lo mas recomendable.

Espero que os haya servido de ayuda amigos!!

Saludos!!!!

API Testing con RobotFramework

Muy buenos días!!

Siguiendo con las pruebas en Robot Framework, os dejo este ejemplo de API testing:

*** Settings ***

Library REST https://mystoreapi.com

*** Variables ***

${ep_catalog} /catalog

${ep_product} /product

${ep_order} /order

${order} {"customer": "Pablo García", "address": "123 Main St"}

${product} {"name": "Banana","price": 0.99,"manufacturer": "General Fruit CO", "category": "fruits","description": "Super Banana","tags":"La noble fruta" }

${product_order} {"productId":"882580", "amount": 2}

${product_id} 882580

${category} fruits

*** Test Cases ***

EP_CATALOG. Listamos todas las categorias

REST.GET ${ep_catalog}/categories

Integer response status 200

[Teardown] Output response body

EP_CATALOG. Listamos todos los primeros 100 productos

REST.GET ${ep_catalog}/products?limit=100&skip=0

Integer response status 200

[Teardown] Output response body

EP_CATALOG. Listamos los 100 primeros productos de una categoria

REST.GET ${ep_catalog}/category/${category}/products?limit=100&skip=0

Integer response status 200

[Teardown] Output response body

EP_CATALOG. Listamos un producto por su ID

REST.GET ${ep_catalog}/product/${product_id}

Integer response status 200

[Teardown] Output response body

EP_CATALOG. Creamos, leemos y borramos un nuevo producto en la tienda

REST.POST ${ep_catalog}/product ${product}

Integer response status 201

${nuevo_prod_id} Integer response body id

Log To Console ${nuevo_prod_id}[0]

REST.GET ${ep_catalog}/product/${nuevo_prod_id}[0]

Integer response status 200

Log To Console response body

REST.DELETE ${ep_catalog}/product/${nuevo_prod_id}[0]

Integer response status 200

Set Suite Variable ${nuevo_prod_id}

[Teardown] Output response body

EP_ORDER. Creamos un nuevo pedido, añadimos un producto, listamos de nuevo el pedido, borramos el producto,listamos y borramos el pedido

REST.POST ${ep_order}/new ${order}

Integer response status 201

${order_id} Integer response body id

Log To Console response body

REST.POST ${ep_order}/${order_id}[0]/product ${product_order}

Integer response status 201

Log To Console response body

REST.GET ${ep_order}/${order_id}[0]

Integer response status 200

Log To Console response body

REST.DELETE ${ep_order}/${order_id}[0]/product/${product_id}

Integer response status 200

Log To Console response body

REST.GET ${ep_order}/${order_id}[0]

Integer response status 200

Log To Console response body

REST.DELETE ${ep_order}/${order_id}[0]

Integer response status 200

[Teardown] Output response body

  • Tips

    • Usamos la libreria REST

    • Ojo con las variables que recogemos del 'response body'

      • ${nuevo_prod_id} Integer response body id

        • Son objetos tipo array por defecto.

      • Si queremos usar su valor, tenemos que pasar obligatoriamente el índice

        • REST.GET ${ep_catalog}/product/${nuevo_prod_id}[0]

        • En nuestro caso siempre será 0 ya que tenemos una colección con un único elemento.

    • Todos los resultados se muestran en el reporte integrado HTML dentro de la carpeta /results de nuestro proyecto

Espero que les sirva de ayuda.

Saludos!!

Patito Miner
15 de may de 2024

Lujazo de aporte! Recomendación, usando el slash podés darle formato de bloque de código al código para que quede más chuletón.

Primera aproximación con RobotFramework

Muy buenos días!!

En este post les dejo una primera aproximación a RobotFramework.

Siguiendo la estela de Cypress y Playwright, este framework nos ayuda a realizar automation testing. Es open source y su instalación es muy sencilla.

  • FUNDAMENTAL !! Tener instalado Python

    • Desde CLI:

      • pip (o pip3) install robotframework (Se puede instalar también mediante brew)

      • Instalamos las librerías:

        • pip install robotframework-seleniumlibrary

        • pip install robotframework-browser

          • rfbrowser init (--skip-browsers EN CASO DE TENER YA INSTALADOS LOS BINARIOS DE LOS BROWSERS)

  • Nos creamos una carpeta....

  • Abrimos nuestro IDE y creamos un archivo con extension .robot

  • Copiamos el siguiente código de prueba

    • *** Settings ***

      Library SeleniumLibrary

      *** Test Cases ***

      Abrir y verificar Título en FRT

      Open Browser

      ... https://www.freerangetesters.com

      ... chrome

      Maximize Browser Window

      Title Should Be Free Range Testers

      Close Browser

  • Le damos al 'PLAY' y comprobamos 'la magia' 🤣

  • Y tenemos generados unos reportes muy apañados.....

  • Ahora toca seguir profundizando en este interesante framework.

  • Os paso links de interés

SALUDOS!!!

API Test automatizado desde Jenkins

Buenos días!!

Este post contiene dos maneras de automatizar pruebas en API desde Jenkins. El primer caso es un POST y GET de un nuevo usuario en la API https://petstore.swagger.io/ . El segundo, es una ejecución automatizada de una colección creada previamente en Postman y cómo a través de Newman, nos genera un reporte HTML que será accesible desde nuestra máquina local.

1.- POST y GET en https://petstore.swagger.io/ por medio de cURL

2.- Ejecución de una colección de Postman y generación de reporte con newman

  • API de pruebas : https://rickandmortyapi.com

  • Previamente tenemos nuestra colección de Postman guardada.

  • Importante marcar la opción en Jenkins Provide Node & npm bin/ folder to PATH Se adjunta en screenshot.

  • En 'Build Steps' :

    • cd /Users/usuario/Carpeta_Coleccion_Postman

    • newman run Rick\&Morty_API.postman_collection.json -r htmlextra

Espero que les sirva de ayuda.

Saludos!!

Este es el Dojo QA, el mejor lugar para hacerte conocer a través de Free Range Testers!

En Free Range Testers siempre estamos buscando formas innovadoras de compartir conocimientos y experiencias que enriquezcan a nuestros miembros. Es por eso que estamos contentos de presentarte El Dojo, un espacio diseñado para fomentar el aprendizaje colaborativo y la exposición de soluciones creativas en el mundo del testing y la calidad de software.

¿Qué es El Dojo?

Inspirado en los tradicionales dojos de artes marciales, donde el aprendizaje y la práctica van de la mano, El Dojo de Free Range Testers es un Topic interactivo donde la comunidad puede publicar hallazgos, ya sea aprendiendo nuevas herramientas o navegando los desafíos del trabajo diario. Este espacio está abierto para todos, desde novatos en el mundo del testing hasta veteranos experimentados, ofreciendo una plataforma para compartir esas joyas de sabiduría que han encontrado en su camino.

Compartir para crecer

En El Dojo, alentamos a nuestros miembros a publicar hallazgos útiles, trucos, guías paso a paso, y cualquier recurso que consideren valioso para el colectivo. ¿Descubriste una manera ingeniosa de automatizar pruebas con Selenium? ¿Tienes una técnica especial para usar Cypress.io que ahorra tiempo? ¡Este es el lugar para compartirlo! No solo se trata de resolver problemas, sino de mostrar cómo lo hiciste, proporcionando valor real a otros miembros que puedan enfrentar desafíos similares.

Visibilidad y reconocimiento

Lo mejor de compartir en El Dojo no es solo la satisfacción de contribuir al crecimiento de otros; también es una oportunidad única para ganar visibilidad y reconocimiento dentro de la comunidad y más allá. Cada artículo compartido en El Dojo será promovido en las redes sociales de Free Range Testers, destacando al autor y su contribución. Esta es una excelente manera de construir tu reputación en el campo, conectarte con otros profesionales y mostrar tu expertise y soluciones creativas al mundo.

¿Cómo participar?

Participar es fácil. Con una cuenta activa en Free Range Testers, simplemente dirígete a la sección El Dojo en la sección Comunidad de Free Range Testers y comienza a compartir tus experiencias, soluciones y aprendizajes. No importa si es un pequeño truco o una guía extensa; si crees que puede ayudar, queremos verlo. Y recuerda, la calidad y la originalidad cuentan, así que toma ese espíritu de innovación y úsalo para inspirar a otros.

Únete a El Dojo hoy

Ayuda a otros a aprender, gana reconocimiento por tu trabajo y sé parte de una comunidad que valora la colaboración y la innovación. ¡Estamos ansiosos por ver tus contribuciones y celebrar juntos el arte del testing de software!

Oh no! Este Test tiene un par de cosas no muy lindas...podrías decir cuáles y proporcionar una mejor versión?

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.Assert;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;

public class UITestSample {

    private WebDriver driver;

    @BeforeMethod
    public void setup() {
        System.setProperty("webdriver.chrome.driver", "path/to/chromedriver");
        driver = new ChromeDriver();
        driver.get("http://example.com/login");
    }

    @Test
    public void testSuccessfulLogin() {
        WebElement usernameField = driver.findElement(By.id("username"));
        WebElement passwordField = driver.findElement(By.id("password"));
        WebElement loginButton = driver.findElement(By.id("loginButton"));

        usernameField.sendKeys("testUser");
        passwordField.sendKeys("testPassword");
        loginButton.click();

        WebElement successMessage = driver.findElement(By.id("success"));
        Assert.assertTrue(successMessage.isDisplayed());
    }
}