Script para ejecutar pruebas en Jest y obtener el coverage de un archivo específico

Necesitaba automatizar el proceso de ejecutar pruebas en Jest y obtener el coverage de un archivo específico. Creé este script para ayudarme con eso. #!/bin/bash # Color definitions BLUE='\033[0;34m' GREEN='\033[0;32m' RED='\033[0;31m' YELLOW='\033[1;33m' CYAN='\033[0;36m' NC='\033[0m' # No Color BOLD='\033[1m' # Function to display usage show_usage() { echo -e "${YELLOW}Usage:${NC} $0 [--find-by-name] <relative-file-path> [additional test options]" echo -e "${YELLOW}Examples:${NC}" echo -e " $0 src/components/Button.tsx --watch" echo -e " $0 src/components/Button.tsx --find-by-name --watch" exit 1 } # Initialize variables FIND_BY_NAME=false RELATIVE_FILE_PATH="" # Parse arguments while [[ $# -gt 0 ]]; do case $1 in --find-by-name) FIND_BY_NAME=true shift ;; *) if [ -z "$RELATIVE_FILE_PATH" ]; then RELATIVE_FILE_PATH="$1" else break # Stop parsing and keep remaining args for test options fi shift ;; esac done # Check if a file name is provided if [ -z "$RELATIVE_FILE_PATH" ]; then show_usage fi # Check if the file exists if [ ! -f "$RELATIVE_FILE_PATH" ]; then echo -e "${RED}Error: ${NC}File '${YELLOW}${RELATIVE_FILE_PATH}${NC}' not found. 😕" exit 1 fi FILE_PATH=$(echo "$RELATIVE_FILE_PATH" | cut -d'/' -f3-) # Get just the file name without extension for --find-by-name mode FILE_NAME=$(basename "$RELATIVE_FILE_PATH") FILE_NAME_NO_EXT="${FILE_NAME%.*}" # Construct the corresponding test file path TEST_FILE_NAME="${FILE_PATH%.*}.test" if [ "$FIND_BY_NAME" = true ]; then # Search by file name TEST_PATH=$(find "tests" -type f \( -name "${FILE_NAME_NO_EXT}.test.tsx" -o -name "${FILE_NAME_NO_EXT}.test.ts" \)) else # Original search by path TEST_PATH=$(find "tests" -type f \( -path "*/${TEST_FILE_NAME}.tsx" -o -path "*/${TEST_FILE_NAME}.ts" \)) fi # Check if the test file exists if [ -z "$TEST_PATH" ]; then echo -e "${RED}Error: ${NC}Test file for '${YELLOW}${RELATIVE_FILE_PATH}${NC}' not found in 'tests' directory. 😕" echo -e "Test file name: ${YELLOW}${FILE_NAME_NO_EXT}.test.tsx${NC}" echo -e "${YELLOW}Hint:${NC} If you're looking for a file by name, try using the --find-by-name flag." exit 1 fi # Print test information with styling echo -e "\n${BLUE}╔════════════════════════════════════════════════════════════╗${NC}" echo -e "${GREEN}▶ Running Coverage Test${NC}" echo -e "${CYAN}📁 Source file:${NC} ${RELATIVE_FILE_PATH}" echo -e "${CYAN}🧪 Test file:${NC} ${TEST_PATH}" echo -e "${CYAN}⚙️ Options:${NC} $@" echo -e "${BLUE}╚════════════════════════════════════════════════════════════╝${NC}\n" yarn test "$TEST_PATH" --coverage --collectCoverageFrom="$RELATIVE_FILE_PATH" "$@" Uso Los casos de prueba están en la carpeta tests. El script buscará el archivo de prueba por ruta de manera predeterminada. Si deseas buscar por nombre, puedes usar la bandera --find-by-name. ...

marzo 3, 2025 · 2 min · Elvin Guti

Crear descripciones de pull requests usando Aider y OpenRouter

Para reducir el tiempo que dedico a escribir instrucciones de pull requests, he estado usando Aider con OpenRouter para generarlas. ¿Cómo funciona? Aider es una herramienta que utiliza IA para ayudarte a escribir código. Es un chatbot que puede ayudarte a escribir código, corregir errores e incluso escribir pruebas. OpenRouter es una herramienta que te permite enrutar peticiones a diferentes APIs. En este caso, la usaremos para enrutar la petición a Aider. ...

marzo 3, 2025 · 4 min · Elvin Guti

Mapear arreglo en Google tag manager del lado del servidor

A veces es necesario enviar a un servicio de terceros una estructura de arreglo diferente a la especificada en Google Analytics 4 (GA4). Entonces, en caso de que no desee crear un nuevo evento solo para este servicio y desee reutilizar tanto como sea posible un evento GA4 como add_to_cart, entonces deberá asignar el arreglo por defecto de GA4 en GTM. Esto suena bastante fácil si ha utilizado GTM (no del lado del servidor) antes, básicamente se crea una custom javascript variable y se devuelve el nuevo arreglo. Sin embargo, en GTM que utiliza un contenedor del lado del servidor, la variable javascript personalizada ya no está disponible. ...

mayo 8, 2024 · 2 min · Elvin Guti

Mostrar nombre completo de una rama en powerlevel10k

powerlevel10k es un tema para zsh muy popular y es mi tema favorito. Sin embargo, los nombres de las ramas se truncan si son bastante largos. Sin embargo, se puede eliminar esta limitación actualizando su archivo de configuración: vim ~/.p10k.zsh Debes buscar la palabra “branch” y comentar la línea que hace el truncado: # Tip: To always show local branch name in full without truncation, delete the next line. # (( $#branch > 32 )) && branch[13,-13]="…" # <-- this line Es posible que necesites reiniciar zsh ...

abril 16, 2024 · 1 min · Elvin Guti