blob: 0ede02846f6b52d47db0644b5dea169d7e943708 [file] [log] [blame]
/*
* Copyright 2014 Google Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* @fileoverview casperjs tests for admin site page.
* @author jcrowell@google.com (Jeffrey Crowell)
*/
// Allow for xpath selections.
var x = require('casper').selectXPath;
casper.test.begin('Statistics page can load and filter works.',
8, function(test) {
errors = [];
casper.on('page.error', function(msg, trace) { errors.push(msg); });
casper.start('http://localhost/pagespeed_admin/statistics', function() {
// Check that the page loaded properly with no errors.
test.assertEquals(errors, []);
});
casper.then(function() {
// Check that we have all of the stats available.
var stats = this.evaluate(function() {
var stats_frac = document.querySelector('#num').innerHTML;
return stats_frac.split(' ').pop().split('/');
});
var numerator = parseInt(stats[0]);
var denominator = parseInt(stats[1]);
test.assertEquals(numerator, denominator);
test.assertEquals(numerator, denominator);
test.assert(numerator > 0);
var stats_arr = this.evaluate(function() {
return document.querySelector('#stat').innerHTML.split('<td');
});
test.assert(stats_arr.length > 10);
});
casper.then(function() {
// Fill out the Filter with something that 2 stats should match.
this.sendKeys('#text-filter', 'cache_backend');
var stats = this.evaluate(function() {
var stats_frac = document.querySelector('#num').innerHTML;
return stats_frac.split(' ').pop().split('/');
});
var numerator = parseInt(stats[0]);
var denominator = parseInt(stats[1]);
test.assertEquals(numerator, 2);
test.assert(denominator > 0);
var stats_arr = this.evaluate(function() {
return document.querySelector('#stat').innerHTML.split('<td');
});
test.assert(stats_arr.length > 10);
});
casper.then(function() {
// Fill out the Filter with something that no stats should match.
this.sendKeys('#text-filter',
'itislikelythatnothingwillmatchthisverylongstring');
var stats = this.evaluate(function() {
var stats_frac = document.querySelector('#num').innerHTML;
return stats_frac.split(' ').pop().split('/');
});
var numerator = parseInt(stats[0]);
var denominator = parseInt(stats[1]);
test.assertEquals(numerator, 0);
test.assert(denominator > 0);
stats_arr = this.evaluate(function() {
return document.querySelector('#stat').innerHTML.split('<td');
});
test.assertEquals(stats_arr.length, 4);
});
casper.then(function() { test.assertEquals(errors, []); });
casper.run(function() { test.done(); });
});
casper.test.begin('Check Configuration Page', 3, function suite(test) {
errors = [];
casper.on('page.error', function(msg, trace) { errors.push(msg); });
casper.start('http://localhost/pagespeed_admin/config', function() {
// Check that the page loaded properly with no errors.
test.assertEquals(errors, []);
});
casper.thenOpen('http://localhost/pagespeed_admin/spdy_config');
casper.then(function(reponse) { test.assertEquals(errors, []); });
casper.then(function() { test.assertEquals(errors, []); });
casper.run(function() { test.done(); });
});
casper.test.begin('Check Histograms Page', 2, function suite(test) {
errors = [];
casper.on('page.error', function(msg, trace) { errors.push(msg); });
casper.start('http://localhost/pagespeed_admin/histograms', function() {
// Check that the page loaded properly with no errors.
test.assertEquals(errors, []);
});
casper.then(function() { test.assertEquals(errors, []); });
casper.run(function() { test.done(); });
});
casper.test.begin('Check Metadata Caches Page', 2, function suite(test) {
errors = [];
casper.on('page.error', function(msg, trace) { errors.push(msg); });
casper.start(
'http://localhost/pagespeed_admin/cache#show_metadata?PageSpeedFilters=+debug',
function() {
// Check that the page loaded properly with no errors.
test.assertEquals(errors, []);
});
casper.then(function() { test.assertEquals(errors, []); });
casper.run(function() { test.done(); });
});
casper.test.begin('Check Cache Structure Page', 6, function suite(test) {
errors = [];
casper.on('page.error', function(msg, trace) { errors.push(msg); });
casper.start(
'http://localhost/pagespeed_admin/cache#show_metadata', function() {
// Check that the page loaded properly with no errors.
test.assertEquals(errors, []);
});
casper.thenOpen('http://localhost/pagespeed_admin/cache#cache_struct');
casper.then(function() {
// Click all of the checkboxes.
this.test.assertExists(
{type: 'xpath', path: '//*[@id="HTTP Cache_toggle"]'});
this.click(x('//*[@id="HTTP Cache_toggle"]'));
this.test.assertExists(
{type: 'xpath', path: '//*[@id="Metadata Cache_toggle"]'});
this.click(x('//*[@id="Metadata Cache_toggle"]'));
this.test.assertExists(
{type: 'xpath', path: '//*[@id="Property Cache_toggle"]'});
this.click(x('//*[@id="Property Cache_toggle"]'));
this.test.assertExists(
{type: 'xpath', path: '//*[@id="FileSystem Metadata Cache_toggle"]'});
this.click(x('//*[@id="FileSystem Metadata Cache_toggle"]'));
});
casper.then(function() { test.assertEquals(errors, []); });
casper.run(function() { test.done(); });
});
casper.test.begin('Check Console Page', 2, function suite(test) {
errors = [];
casper.on('page.error', function(msg, trace) { errors.push(msg); });
casper.start('http://localhost/pagespeed_admin/console', function() {
// Check that the page loaded properly with no errors.
test.assertEquals(errors, []);
});
casper.then(function() { test.assertEquals(errors, []); });
casper.run(function() { test.done(); });
});
casper.test.begin('Check Message History Page', 2, function suite(test) {
errors = [];
casper.on('page.error', function(msg, trace) { errors.push(msg); });
casper.start('http://localhost/pagespeed_admin/message_history', function() {
// Check that the page loaded properly with no errors.
test.assertEquals(errors, []);
});
casper.then(function() { test.assertEquals(errors, []); });
casper.run(function() { test.done(); });
});
casper.test.begin('Check Graphs Page', 2, function suite(test) {
errors = [];
casper.on('page.error', function(msg, trace) { errors.push(msg); });
casper.start('http://localhost/pagespeed_admin/graphs', function() {
// Check that the page loaded properly with no errors.
test.assertEquals(errors, []);
});
casper.then(function() { test.assertEquals(errors, []); });
casper.run(function() { test.done(); });
});