'use strict'; var path = require('path'); var fs = require('fs'); var webpack = require('webpack'); var rm_rf = require('rimraf'); var CommonsChunkPlugin = require("webpack/lib/optimize/CommonsChunkPlugin"); var HtmlWebpackPlugin = require('../index.js'); var OUTPUT_DIR = path.join(__dirname, '../dist'); function testHtmlPlugin(webpackConfig, expectedResults, outputFile, done) { outputFile = outputFile || 'index.html'; webpack(webpackConfig, function(err, stats) { expect(err).toBeFalsy(); expect(stats.hasErrors()).toBe(false); var htmlContent = fs.readFileSync(path.join(OUTPUT_DIR, outputFile)).toString(); for (var i = 0; i < expectedResults.length; i++) { var expectedResult = expectedResults[i]; if (expectedResult instanceof RegExp) { expect(htmlContent).toMatch(expectedResult); } else { expect(htmlContent).toContain(expectedResult.replace('%hash%', stats.hash)); } } done(); }); } describe('HtmlWebpackPlugin', function() { beforeEach(function(done) { rm_rf(OUTPUT_DIR, done); }); it('generates a default index.html file for a single entry point', function(done) { testHtmlPlugin({ entry: path.join(__dirname, 'fixtures/index.js'), output: { path: OUTPUT_DIR, filename: 'index_bundle.js' }, plugins: [new HtmlWebpackPlugin()] }, ['