module.exports = function(app) {
    var Suite = window.Benchmark.Suite;

    var names = ["dom", "dom-innerHTML", "marko-vdom", "react"];

    var htmlFiles = ["todomvc", "marko-docs", "tabs"];

    function loadScripts() {
        window.createBenchmarks = {};

        var scripts = [];

        names.forEach(function(name) {
            htmlFiles.forEach(function(htmlFile) {
                scripts.push(
                    "./codegen-create/benchmark-" +
                        htmlFile +
                        "-" +
                        name +
                        ".js"
                );
            });
        });

        return app.loadScripts(scripts);
    }

    function runForHtmlFile(htmlFile) {
        return loadScripts(htmlFile).then(function() {
            var suite = new Suite("create-" + htmlFile);

            names.forEach(function(name) {
                suite.add(name, function() {
                    return window.createBenchmarks[htmlFile + "-" + name]();
                });
            });

            return app.runSuite(suite);
        });
    }

    var loadScriptsPromise = loadScripts();

    return function() {
        var promiseChain = loadScriptsPromise;

        htmlFiles.forEach(function(htmlFile) {
            promiseChain = promiseChain.then(function() {
                return runForHtmlFile(htmlFile);
            });
        });

        return promiseChain;
    };
};
