SlimerJS, el hermano de PhantomJS basado en Gecko

  • #herramientas
  • #javascript

Te enseñamos a utilizar SlimerJS, el hermano de PhanthomJS que corre bajo el motor de renderizado Gecko.

En anteriores artículos ya vimos que era PhantomJS, como podía analizar la velocidad de nuestro sitio web y como realizar capturas de pantalla en múltiples resoluciones mediante pageres (un módulo que utiliza PhantomJS para realizar capturas).

Recuerdo que PhantomJS es una implementación del motor WebKit scriptable con JavaScript. Pues bien, hoy os traemos una introducción a SlimerJS (GitHub), un proyecto inspirado en PhantomJS pero basado en Gecko, el motor de Mozilla.

No es completamente autónomo, requiere que tengamos instalado en nuestro sistema Mozilla Firefox o XulRunner (el núcleo de Firefox sin su UI), pero menos es nada.

Instalación

Para instalarlo tan solo debemos descargar la versión Standalone Edition (incluye XulRunner) o la versión Lightweight Edition (necesitas instalar XulRunner o Firefox por tu cuenta).

Si elegimos la versión ligera debemos exportar la variable SLIMERJSLAUNCHER apuntando a la ubicación del ejecutable de Firefox o XulRunner. También podemos hacer uso de xvfb para convertir SlimerJS en autónomo (no se abrirán ventanas).

Más información sobre la instalación en la documentación.

Funcionamiento

El funcionamiento es sencillo y además Slimer es compatible con la API de Phantom, por lo que el código es muy similar o idéntico en algunos casos.

Para calcular el tiempo que tarda en cargar nuestra página, basta con ejecutar el mismo loadspeed.js que ya vimos en el artículo sobre PhantomJS:

slimerjs loadspeed.js https://felixsanz.com
Page title is felixsanz
Loading time 1003 msec

En el caso de realizar una captura de pantalla, nuestro artículo utilizaba pageres, un módulo que se apoya en Phantom y ofrece una excelente API de serie. Pero realizar capturas de pantalla es tan sencillo en Phantom como en Slimmer, ¡ya que el código es el mismo! Veamos un ejemplo:

JavaScript
const webpage = require('webpage')

const page = webpage.create()
page.open('https://felixsanz.com', status => {
  page.viewportSize = { width:1024, height:768 }
  page.render('screenshot.png')
  slimer.exit()
})

Podemos utilizar tanto slimer.exit() como phantom.exit(), Slimer entiende ambas.

Así pues, Slimer es un gran proyecto similar a PhantomJS, que aporta compatibilidad con su hermano y alguna que otra interesante diferencia. Aunque por supuesto, el principal motivo de la existencia de Slimer es que hace uso del motor Gecko de Mozilla.

Por supuesto en este artículo no hemos contado todo lo que Slimer es capaz de hacer (tampoco lo hicimos en el de Phantom), así que te invitamos a que investigues y nos cuentes qué uso le has dado.

Compartir en