Busca lo que quieras

Como ajustar tamaño de window de phantomjs con se-interpreter

Seré lo más breve posible.

Esto gracias a david.lince y a la documentación de se-interpreter.

El problema:

Cuando se corren las pruebas E2E con phantomJS, me generaba error, pues no encontraba ciertos objetos en el DOM. ¿Por qué? Porque la ventana que genera phantomJS era muy pequeña, razón por la cual los sidebars estan ocultos, y por esto, no encontraba los botones que estaban dentro de esos sidebars.

Eso lo logré determinar gracias a que ejecuté las pruebas sobre firefox con tamaño pequeño de la ventana, y sucedió el mismo error.

¿La solución?

Obligar a phantomJS a ejecutarse sobre un tamaño de pantalla grande.

¿Y cómo se hace eso?

Me demoré como unas 3 o 4 horas. Que triste.
La utilidad que estamos utilizando es la de se-interpreter. Eso es como un framework que me permite ejecutar una serie de pasos formateados en un json.

Asi que bajo esta herramienta de se-interpreter, tocó realizar el ajuste.

Aquí estan las cosas que me toco hacer:

PRIMERO:

1. Gracias a un script que subió david.lince, pude hacer esto, sino... imposible....
Aquí el link donde tome este codigo: https://github.com/Zarkonnen/se-interpreter/blob/master/step_types/setWindowSize.js

 Entonces..

En la carpeta step_types, (que esta en la carpeta donde quedó instado se-interpreter)crear un archivo que se puede llamar setWindowSize.js.
Y ese archivo debe contener lo siguiente:

exports.get = function(stepType) {
  if (stepType == "windowSize") {
    return {
      'run': function(tr, cb) {
        tr.do('windowHandle', [], cb, function (err, handle) {
          var w = parseInt(tr.p('width'), 10),
              h = parseInt(tr.p('height'), 10);
          tr.do('windowSize', [handle, w, h], cb, function(err) {
            cb({'success': !err, 'error': err});
          });
        });
      }
    };
  }
  return null;
};

SEGUNDO
Ahora, en nuestro json de pruebas, podemos agregar un step de tipo windowSize.

Ejemplo...

"steps": [
        {
            "type": "get",
            "url": "http://localhost:8001"
        },
        { "type": "windowSize",  "width": 1600, "height": 900 },
        {
            "type": "waitForElementPresent",
            "locator": {
                "type": "xpath",
                "value": "//li[@id='menuListInbox']//span[.='Inbox']"
            }
        }
...
]


Como esta resaltado, defino un paso extra al principio del set de pruebas, en el cual le estoy diciendo que por favor, me coloque el tamaño de la ventana de un tamaño de 1600 por 900.

TERCERO

Finalmente cuando ejecutemos nuestro comando de se-interpreter debemos agregar un parámetro extra donde le decimos a se-interpreter que vamos a agregar un modulo extra, en este caso setWindowSize. Ese parámetro es: executorFactory.

Así:

se-interpreter archivoConfiguracionPruebas.json --executorFactory=" + __dirname + "\\node_modules\\se-interpreter\\step_types\\setWindowSize.js"  + " --parallel 1  --listener=" + __dirname + "\\scripts\\reporter\\listenerDeReportes.js


Y LISTO!!!... a probar se dijo... y me funcionó a mi... espero a ti tambien!!!!!

Saludos.


Sean felices! :) Y siéntanse libres de opinar ;)

No hay comentarios:

Publicar un comentario

Palabras Clave

.NET (93) AJAX (2) ajaxcontroltoolkit (2) Algoritmos (1) android (1) Angular (1) Arrays (1) AS2 o ActionScript 2.0 (1) AS3 o ActionScript 3.0 (64) ASP (7) ASP.NET (3) Azure (1) Azure DevOps (2) Backup (2) Batch (4) blogger (1) Browser Support (2) C# (53) Charts (1) Chorme extensions (1) Chrome (3) cmd (18) código postal (1) Colombia tips (1) command (1) Conexion remota (1) Controles Web .NET (24) Cookies (1) cordova (1) CSS (14) CSV (5) Cufon (1) DateTime (2) deployment (2) Desarrollo movil (2) Desarrollo web (5) Diseño (4) DNN o DotNetNuke (5) docker (1) Encuestas (1) Entity Framework (1) Error (1) Eval (2) Excel (4) Expresiones regulares (2) Facebook (14) fechas (1) Fiddler (1) FileUpload (1) Filezilla (1) Firefox (2) Flash (9) Fonts (3) FQL (1) frameworks (2) Futuro de la web (1) git (1) Google Code (13) Google Maps (4) hackintosh (3) hazard 10.6.2 (3) herramientas para developers (1) highchart (1) Hilos (2) Hosting Windows (18) HTML (38) HTML5 (6) IDE (1) IE (2) IE9 (1) IIS (13) imagenes (3) jasmine (2) java (1) jqgrid (2) Jquery y Javascript (90) jquery-ui (5) jQueryMobile (1) JSON (1) knockout (4) library (1) Link Interesantes (2) List (1) Macro (2) Matemáticas (2) Membership (6) Memoria (1) Mis Experiencias (3) momentjs (1) ms-dos (1) MSN (1) MVC (1) MVC4 (3) MySQL (2) node.js (4) Notepad++ (3) Notificaciones (1) ObjectDataSource (2) Online (2) Opinión (4) OSX (3) Parallels Plesk Panel (1) petapoco (1) PhantomJS (1) PHP (4) Porqué este blog (1) Powershell (1) Razor (3) Redes (2) REGEX (4) REST (1) SDK Android (1) Seguridad (1) SelectParameters (1) Selenium (2) sencha (3) sencha cmd (2) SEO (1) SMTP (2) Software útil (8) Solución (1) Soporte (1) SQL (15) SQL Server (58) SQLite (2) Store Procedures (20) String (5) Testing Code (2) texto (2) tips de datos (1) tips de desarrollo (1) TutoFaceAS3 (4) TutoProAS3 (4) Tutoriales (7) Tweenlite effects (3) Últimas noticias (1) unit testing (1) usb (1) VBA (1) Video (1) virus (1) Web API (2) Web Browsers (1) Web Forms (7) web.config (1) Webmaster (8) Webmatrix (1) webrole (1) webservices (1) webstorm (1) Win Forms (5) Windows (21) Windows 7 (1) Windows 8 (1) XML (2) Youtube API (2)