Instalación de Jasmine Standalone (a pelo) paso a paso
Quieres escribir tus primeros tests de JavaScript, pero no quieres instalar Node, npm ni configurar nada. Para eso existe Jasmine Standalone: una versión de Jasmine que funciona solo con un navegador.
Viene lista para usar: la descomprimes y ya puedes trabajar. No hay que instalar nada ni leer un manual de instalación. Por eso lo de «a pelo»: sin herramientas por medio, tú, unos ficheros y el navegador.
Jasmine es un framework de testing para JavaScript: te da las funciones describe, it y expect para escribir tests y un informe que dice cuáles pasan y cuáles fallan.
Instalar Jasmine Standalone en cuatro pasos
- Descarga el zip de la última versión.
- Descomprímelo en una carpeta
jasminede tu proyecto. - Crea el HTML que ejecuta los tests.
- Escribe un test y abre el HTML en el navegador.
1. Descarga la distribución
Entra en la página de versiones de Jasmine en GitHub y descarga el fichero jasmine-standalone-X.Y.Z.zip de la última versión. En noviembre de 2026 es la 7.0.1.
Si prefieres la terminal:
curl -LO https://github.com/jasmine/jasmine/releases/download/v7.0.1/jasmine-standalone-7.0.1.zip
-L sigue la redirección de GitHub hasta el fichero y -O lo guarda con su nombre original.
2. Descomprímelo en tu proyecto
mkdir -p mi-proyecto/jasmine
unzip jasmine-standalone-7.0.1.zip -d mi-proyecto/jasmine
La opción -d indica en qué carpeta descomprimir. Así no tienes que mover nada después. Dentro tendrás esto:
jasmine/
├── lib/jasmine-7.0.1/ ← el framework (no lo toques)
│ ├── jasmine.js
│ ├── jasmine-html.js
│ ├── boot.js
│ ├── jasmine.css
│ └── jasmine_favicon.png
├── src/ ← código de ejemplo (Player.js, Song.js)
├── spec/ ← tests de ejemplo
└── SpecRunner.html ← la página que ejecuta los tests
Abre SpecRunner.html en el navegador (doble clic basta) y verás los tests de ejemplo en verde. Es la forma más rápida de comprobar que todo funciona.
3. Crea el HTML que ejecuta tus tests
Puedes editar SpecRunner.html o crear tu propia página. En el proyecto del artículo original se separaba el HTML de la aplicación del HTML de los tests: quedaban dos index.html, uno para la aplicación y otro, dentro de la carpeta test, para los tests. Esta era su estructura:
pruebas/
├── .idea/
├── css/
├── img/
├── jasmine/
├── js/
│ └── index.js
├── test/
│ ├── spec.support/
│ │ └── jasmine.json
│ ├── index.html
│ ├── index.spec.js
│ └── npm-debug.log
├── app.js
├── index.html
└── pruebas.iml
Y este era su test/index.html (las primeras 29 líneas):
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Jasmine Spec Runner v3.1.0</title>
<link rel="shortcut icon" type="image/png" href="../jasmine/lib/jasmine-3.1.0/jasmine_favicon.png">
<link rel="stylesheet" href="../jasmine/lib/jasmine-3.1.0/jasmine.css">
<script src="../jasmine/lib/jasmine-3.1.0/jasmine.js"></script>
<script src="../jasmine/lib/jasmine-3.1.0/jasmine-html.js"></script>
<script src="../jasmine/lib/jasmine-3.1.0/boot.js"></script>
<link rel="stylesheet" href="../css/styles.css">
</head>
<body>
<div id="container">
<header>
<h1>Play With Numbers</h1>
</header>
<div id="randNumber">
<h3>Enter a number: </h3>
<textarea id="randNumberInput"></textarea>
<div class="button">Hit me</div>
</div>
</div>
<script src="../js/index.js"></script>
<script src="index.spec.js"></script>
Aquel HTML es de la versión 3.1.0, pero la idea es la misma. Para la 7.0.1, el test/index.html queda así:
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="utf-8">
<title>Tests de mi proyecto</title>
<link rel="shortcut icon" type="image/png" href="../jasmine/lib/jasmine-7.0.1/jasmine_favicon.png">
<link rel="stylesheet" href="../jasmine/lib/jasmine-7.0.1/jasmine.css">
<script src="../jasmine/lib/jasmine-7.0.1/jasmine.js"></script>
<script src="../jasmine/lib/jasmine-7.0.1/jasmine-html.js"></script>
<script src="../jasmine/lib/jasmine-7.0.1/boot.js"></script>
<!-- El código que quieres probar -->
<script src="../js/index.js"></script>
<!-- Tus tests -->
<script src="index.spec.js"></script>
</head>
<body>
</body>
</html>
Tres cosas importan:
- La versión de las rutas. Si descargas otra versión, cambia
7.0.1por la tuya en todas las líneas. - El orden. Primero Jasmine (
jasmine.js,jasmine-html.js,boot.js), después tu código y al final tus tests. Un test no puede usar una función que todavía no se ha cargado. - Las rutas relativas. Como este HTML está en
test/, se sube un nivel con../para llegar ajasmine/y ajs/.
No hace falta type="text/javascript" en los <script>: es el valor por defecto en HTML.
Si tu código necesita elementos de la página (un botón, un campo de texto), puedes cargar tu código y tus tests al final del <body>, como en el HTML original. boot.js espera a que la página termine de cargar para lanzar los tests, así que funcionan en los dos sitios.
4. Escribe tu primer test
En js/index.js, el código que quieres probar:
function esPar(numero) {
return numero % 2 === 0;
}
En test/index.spec.js, los tests:
describe('esPar', function() {
it('devuelve true con un número par', function() {
expect(esPar(4)).toBe(true);
});
it('devuelve false con un número impar', function() {
expect(esPar(7)).toBe(false);
});
});
describeagrupa los tests de una misma cosa.ites cada test: una frase que dice qué se espera.expect(...).toBe(...)compara el resultado con el valor esperado.
Abre test/index.html en el navegador: verás «2 specs, 0 failures». Cambia esPar para que devuelva siempre true y recarga: el segundo test saldrá en rojo con el motivo del fallo.
Así empezaba el primer fichero de tests del proyecto original, con un beforeEach que prepara la aplicación antes de cada test. Es un fragmento: el resto de tests iba dentro del mismo describe exterior:
describe('application', function() {
beforeEach(function() {
start();
});
describe('True is true', function(){//describe describe el caso de uso
it('should be true', function() {//it son las comprobaciones
expect(true).toEqual(true);
});
});
// …
});
Si quieres saber qué hace cada pieza (describe, it, beforeEach, afterEach…), se explica en Composición de un test en TDD y sus métodos.
Primero Jasmine, luego tu código, al final tus tests.
¿Hace falta un servidor web?
No. Abrir el HTML con doble clic funciona. La documentación de Jasmine recomienda, aun así, servirlo con un servidor web sencillo (cita como ejemplo el paquete serve), porque algunos navegadores dan menos información de los errores cuando la página se abre desde file://. Si un test falla sin un mensaje claro, prueba así.
¿Standalone, npm o Jest?
El standalone es perfecto para aprender, para una kata o para un proyecto pequeño sin herramientas. Cuando el proyecto crece, conviene pasar a una de estas opciones:
| Opción | Cuándo usarla | Cómo empezar |
|---|---|---|
| Jasmine Standalone | Aprender o probar código de navegador sin instalar nada | Descargar el zip |
jasmine (npm) |
Ejecutar los tests en Node desde la terminal o en integración continua | npm install --save-dev jasmine y npx jasmine init |
jasmine-browser-runner (npm) |
Ejecutar los tests en un navegador de forma automática | npm install --save-dev jasmine-browser-runner jasmine-core y npx jasmine-browser-runner init |
Con el paquete de npm, el mismo test se ejecuta en la terminal con npx jasmine; solo hay que exportar la función con module.exports e importarla en el test con require.
Si prefieres Jest, tienes la guía en Instalar Jest en un proyecto de JavaScript.
Si programas con IA
Un asistente de IA puede generarte la función y también los tests. Pero si no los ejecutas, no sabes si algo funciona. Tener los tests a un clic, aunque sea en un HTML, es la red de seguridad mínima para revisar lo que propone la IA antes de aceptarlo. Es una de las ideas del enfoque IA Limpia.
Fuentes
Comprobado en noviembre de 2026:
- Página de versiones de Jasmine en GitHub: la última distribución standalone es la 7.0.1 (15 de agosto de 2026). En npm,
jasmine-coreva por la 7.0.2 yjasminepor la 7.0.0. - Notas de la versión 7.0.0 y guía de actualización a la 7.0: nuevo arranque en el navegador con un único
boot.js. - Documentación oficial de Jasmine: Standalone Setup, Node.js Setup y Browser Setup.
Qué se ha ejecutado: se descargaron y descomprimieron los zips de las versiones 7.0.1 y 6.3.0 para comprobar sus ficheros (la 6.3.0 usa boot0.js y boot1.js; la 7.0.1 solo boot.js, aunque su SpecRunner.html sigue pidiendo boot0.js). Los tests de esPar y los de ejemplo del zip se ejecutaron con jasmine 7.0.0 y jasmine-core 7.0.2 en Node 24.21, cargando los ficheros como scripts clásicos, igual que hace el navegador. La página HTML del artículo no se ha abierto en un navegador en esta revisión.