Skip to content

Instantly share code, notes, and snippets.

View igorlima's full-sized avatar
:octocat:
I may be slow to respond.

Igor Ribeiro Lima igorlima

:octocat:
I may be slow to respond.
View GitHub Profile
@igorlima
igorlima / README.md
Last active August 29, 2015 13:57
Visualizando página responsiva em diversos navegadores

Gittip Donate Button

Nesse artigo vou mostrar rapidamente como tirar um Print Screen da página inicial de seu site utilizando diversos dispositivos. Algo que pode facilitar e muito a vida caso esteja desenvolvendo uma página responsiva.

Nesse exemplo vamos utilizar o NodeJS e o Selinium 2. As outras dependências necessárias estão especificadas no arquivo package.json. Arquivo que é usado para fornecer ao gerenciador de pacotes NPM informações de como lidar com as dependências do projeto, a descrição do projeto, a licença utilizada, dentre outras.

Para facilitar nossa vida vamos utilizar um serviço de Cloud do SauceLabs. Esse serviço permite utilizar diversos tipos de navegadores. Logo logo

@igorlima
igorlima / README.md
Last active August 29, 2015 14:03
Artigo Tableless - Gerenciamento de dependências de bibliotecas JavaScript

Gittip Donate Button

Esse artigo é mais um exemplo prático de como gerenciar dependências JS. Para isso vamos utilizar um projeto sem gerenciamento de dependência e aplicar os conhecimentos do artigo publicado no Tableless sobre o Bower. Primeiramente, vamos baixar o projeto:

git clone git@gist.github.com:/69153705256f6a9a4557.git projeto-sem-gerenciamento
cd projeto-sem-gerenciamento

As bibliotecas utilizadas são: Knockout, Zepto, Ratchet JS e Font Awesome. Para gerenciá-las, é preciso criar um arquivo json de configuração.

@igorlima
igorlima / README.md
Last active August 29, 2015 14:16
Get started with Saucie CLI and make easier cross browser testing

Gittip Donate Button

You probably know that to do JavaScript testing is good and one of hurdles to overcome is how to test our code on different browsers. There’re some tools availables for helping us on hurdling this overcome. One of them is a CLI (command line) named saucie developed by igorlima. This CLI is a library hosted on NPM which allows integrate your frontend JavaScript tests with SauceLabs platform. SauceLabs makes awesome cross browser testing, and saucie makes easier that cross browser testing by CLI.

A great interactive JS Test Runner, the testem library, uses saucie on its examples and has the fo

@igorlima
igorlima / README.md
Last active August 29, 2015 14:16
JS unit testing using dependency injection

Gittip Donate Button

JS unit testing using dependency injection

You probably know that to do JavaScript testing is good and some hurdles to overcome is how to test our code in a manner to (i) inject mocks for other modules, (ii) to leak private variables or (iii) override variables within the module.

rewire is a tool for helping us on overcoming these hurdles. It provides us an easy way to dependency injection for unit testing and adds a special setter and getter to modules so we can modify their behaviour for better unit testing. What rewire does is to not load the file and eval the contents to emulate the load mechanism.

To get started with dependency injection, we'll create a twitter rest api server and do unit tests using mocks and overriding variables within modules. This e

@igorlima
igorlima / 0_reuse_code.js
Created October 1, 2013 11:59
Here are some things you can do with Gists in GistBox.
// Use Gists to store code you would like to remember later on
console.log(window); // log the "window" object to the console
@igorlima
igorlima / 5-a-testem-issue.md
Last active December 25, 2015 05:49
A Testem issue

The failed tests are not been reported on testem as we expected.

@igorlima
igorlima / Pasta.js
Last active December 29, 2015 09:19
Introdução de como executar testes unitários em diferentes tipos de navegadores
function Pasta() {
// recipes for good pasta sauces
this.sauces = {
'bolognese': ["tomatoes", "garlic", "olive", "herbs", "meat"]
};
this.sauceIngredients = [];
}
Pasta.prototype.add = function (ingredient) {
this.sauceIngredients.push(ingredient);
@igorlima
igorlima / Readme.md
Last active December 30, 2015 12:08
Introdução ao Selenium 2.

Gittip Donate Button

Selenium é uma ferramenta de apoio às necessidades de testes em aplicações web. Altamente flexível, permite muitas opções para a localização de elementos de interface no navegador e simular comportamentos reais de um usuário. A versão 2.0 tem como funcionalidade primária a integração da API WebDriver. Projetado para fornecer uma interface ainda mais simples, concisa e orientada a objeto, o que melhora de forma significativa o suporte aos problemas complexos que são enfrentados ao testar uma aplicação web.

Essa API pode ser chamada através de diversas linguagem de programação, porém, em nosso exemplo, iremos utilizar o NodeJS (JavaScript), que pode ser baixado no site oficial e que possui um gerenciador de pacotes (Node Package Manager – NPM), o qual p

@igorlima
igorlima / Readme.md
Last active December 31, 2015 03:49
JavaScript de forma assíncrona e legível

Gittip Donate Button

A programação assíncrona possui a vantagem de gerar códigos perfomáticos. Em certos casos, a implementação de diversas funções assíncronas encadeadas através de funções callback pode prejudicar a leitura e a manutenção do código. Para demonstrar esse encadeamento, vamos utilizar um trecho de código que utiliza a API do Selenium 2. Baseado em um exemplo do site do SauceLabs.

A API do Selenium WebDriver pode ser utilizada por diversas linguagem de programação, porém, em nosso exemplo, iremos utilizar o NodeJS (JavaScript) e o gerenciador de pacotes NPM, que podem ser baixados no site oficial. O NPM é necessário para instalar o PhantomJS e o WD, utilizando o seguinte script:

``npm install -g

@igorlima
igorlima / Calculadora.js
Last active January 1, 2016 05:19
Desenvolvimento dirigido a comportamento com JasmineJS
'use strict';
module.exports = (function() {
var Calculadora = {
somar: function() {
var soma = 0, i = undefined;
for( i=0; i < arguments.length; i++ )
soma += arguments[i];