/* * Copyright 2010 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. */ package com.google.jstestdriver.server.handlers.pages; import static com.google.jstestdriver.server.handlers.pages.SlavePageRequest.LOAD_TYPE; import static com.google.jstestdriver.server.handlers.pages.SlavePageRequest.TESTCASE_ID; import com.google.inject.Inject; import com.google.inject.name.Named; import com.google.jstestdriver.util.HtmlWriter; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.IOException; /** * Runner page * * @author corbinrsmith@gmail.com (Cory Smith) */ public class RunnerPage implements Page { private static final Logger logger = LoggerFactory.getLogger(RunnerPage.class); private final TestFileUtil testFileUtil; private final Boolean debug; @Inject RunnerPage(TestFileUtil testFileUtil, @Named("debug") Boolean debug) { this.testFileUtil = testFileUtil; this.debug = debug; } @Override public void render(HtmlWriter writer, SlavePageRequest request) throws IOException { logger.debug("Debug: " + debug); writer.startHead() .writeTitle("Console Runner") .writeScript("var start = new Date().getTime();") .writeExternalScript("/static/lib/json2.js") .writeExternalScript("/static/lib/json_sans_eval.js") .writeExternalScript("/static/jstestdrivernamespace.js") .writeScript("jstestdriver.runConfig = {'debug':" + debug + "};") .writeExternalScript("/static/lib/jquery-min.js") .writeExternalScript("/static/runner.js") .writeScript( "jstestdriver.console = new jstestdriver.Console();\n" + "jstestdriver.runner = jstestdriver.config.createRunner(\n" + " jstestdriver.config.createExecutor,\n" + " jstestdriver.plugins.createPausingRunTestLoop(\n" + " jstestdriver.TIMEOUT,\n" + " jstestdriver.now,\n" + " jstestdriver.setTimeout));") .writeScript("jstestdriver.log('runner loaded in ' + (new Date().getTime() - start));start = new Date().getTime();"); if (!"load".equals(request.getParameter(LOAD_TYPE))) { testFileUtil.writeTestFiles(writer, request.getParameter(TESTCASE_ID)); } writer.writeScript("jstestdriver.log('test loaded in ' + (new Date().getTime() - start));jstestdriver.jQuery(window).load(function(){jstestdriver.runner.listen(" + "jstestdriver.manualResourceTracker.getResults());});"); writer.finishHead() .startBody() .finishBody() .flush(); if (request.getBrowser() != null) { logger.debug("finished runner page for " + request.getBrowser().getId()); } } }