Skip to content

Instantly share code, notes, and snippets.

@felipefialho
Forked from vitorbritto/responsive-test.md
Created August 9, 2013 17:07
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save felipefialho/6195286 to your computer and use it in GitHub Desktop.
Save felipefialho/6195286 to your computer and use it in GitHub Desktop.

Teste para projetos responsivos

##Problema Testar/verificar a disposição dos elementos de uma determinada página em determinadas resoluções de tela.

Solução

Executar captura de telas de acordo com os viewports definidos em um script, com a ajuda do PhantomJS.

Necessário ter o node e o npm instalados

Passo 1: instalação do PhantomJS através do NPM ou brew:

$ sudo npm install -g phantomjs

$ brew update && brew install phantomjs

Passo 2: instalação dos módulos async e system no diretório do projeto.

$ npm install async
$ npm install system

Passo 3: criação do script responsável pelas capturas de telas.

/*
 * Necessários: phantomjs, async e system
 * Uso: phantomjs capture.js http://www.enderecoqualquer.com.br
 */
var async   = require("async"),
    system  = require('system'),
    url     = system.args[1],
    project = "nome_do_projeto", // Defina o nome do projeto
    sizes   = [         // Resoluções
        [320, 480],     // 320x480   - iPhone (portrait)
        [480, 240],     // 480x240   - iPhone (landscape)
        [320, 568],     // 320x568   - Android
        [768, 1024],    // 768x1024  - iPad (portrait)
        [1024, 768],    // 1024x768  - iPad (landscape) e Desktops
        [1280, 800],    // 1280x800  - Common Desktops
        [1440, 900],    // 1440x900  - Desktops mais recentes
        [1660, 1050]    // 1660x1050 - Tela grande
    ];

function capture(sizes, callback) {
    var page = require("webpage").create();
    page.viewportSize = {
        width: sizes[0],
        height: sizes[1]
    };
    page.zoomFactor = 1;
    page.open(url, function (status) {
        var savedir = url.replace(/[^a-zA-Z0-9]/gi, '-').replace(/^https?-+/, ''),
            filename = project + "_" + sizes[0] + "x" + sizes[1] + ".png";
        page.render("./screenshots/" + savedir + "/" + filename); // Diretório das telas capturadas
        page.close();
        callback.apply();
    });
}

async.eachSeries(sizes, capture, function (e) {
    if (e) console.log(e);
    console.log("Captura de telas realizada com sucesso!"); // Mensagem de sucesso!
    phantom.exit();
});

Passo 4: salve o script na pasta raiz do seu projeto como capture.js

Passo 5: abra o seu terminal e execute dentro do diretório do seu projeto o comando phantomjs capture.js http://www.enderecoqualquer.com.br

Passo 6: confira as telas capturadas na pasta definida no seu script. =D

@felipefialho
Copy link
Author

Só para constar, por hora estou utilizando junto com o Build do Grunt

"grunt build & phantomjs capture.js www.urldomeusite"

Funcionando perfeitamente ; )

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment