searls / jasmine-maven-plugin

Maven plugin to execute Jasmine Specs. Creates your HTML runners for you, runs headlessly, outputs JUnit XML
http://searls.github.io/jasmine-maven-plugin
Other
290 stars 163 forks source link

Configuration not visible for jasmine:test #79

Closed sarxos closed 12 years ago

sarxos commented 12 years ago

Let's start from the beginning. This is my Jasmine plugin configuration:

<plugin>
    <groupId>com.github.searls</groupId>
    <artifactId>jasmine-maven-plugin</artifactId>
    <version>1.1.0</version>
    <executions>
        <execution>
            <id>jasmine</id>
            <goals>
                <goal>generateManualRunner</goal>
                <goal>resources</goal>
                <goal>testResources</goal>
                <goal>test</goal>
                <goal>preparePackage</goal>
                <goal>bdd</goal>
            </goals>
            <configuration>
                <preloadSources>
                    <source>src/test/javascript/lib/jquery.js</source>
                    <source>src/test/javascript/lib/underscore.js</source>
                    <source>src/test/javascript/lib/backbone.js</source>
                    <source>src/test/javascript/app/sample.backbone.app.js</source>
                    <source>src/test/javascript/lib/jasmine-dom-fixtures.js</source>
                    <source>src/test/javascript/lib/jasmine-dom-matchers.js</source>                            
                </preloadSources>
                <jsTestSrcDir>src/test/javascript/specs</jsTestSrcDir>
                <browserVersion>FIREFOX_3_6</browserVersion>
            </configuration>
        </execution>
    </executions>
</plugin>

Everything is ok when I run only test goal without specifying jasmine prefix. My specs are being executed and surefire report is generated. However jasmine prefix for bdd and test goals doesn't work - when I execute each one of them then execution configuration is not being loaded and I get tons of JavaScript errors.

Below is the correct configuration visible in debug mode for test goal without jasmine prefix.

mvn clean test -X
    <script type="text/javascript" src="src/test/javascript/lib/jquery.js"></script>
    <script type="text/javascript" src="src/test/javascript/lib/underscore.js"></script>
    <script type="text/javascript" src="src/test/javascript/lib/backbone.js"></script>
    <script type="text/javascript" src="src/test/javascript/app/sample.backbone.app.js"></script>
    <script type="text/javascript" src="src/test/javascript/lib/jasmine-dom-fixtures.js"></script>
    <script type="text/javascript" src="src/test/javascript/lib/jasmine-dom-matchers.js"></script>
    <script type="text/javascript" src="src/main/javascript/backbone.modelbinding.js"></script>
    <script type="text/javascript" src="src/test/javascript/specs/checkboxConventionBindings.spec.js"></script>
[INFO] >>> jasmine-maven-plugin:1.1.0:test (jasmine) @ backbone-modelbinding >>>
[DEBUG] com.sarxos:backbone-modelbinding:war:0.5.1
[INFO] 
[INFO] --- jasmine-maven-plugin:1.1.0:generateManualRunner (jasmine) @ backbone-modelbinding ---
[DEBUG] Configuring mojo com.github.searls:jasmine-maven-plugin:1.1.0:generateManualRunner from plugin realm ClassRealm[plugin>com.github.searls:jasmine-maven-plugin:1.1.0, parent: sun.misc.Launcher$AppClassLoader@d9f9c3]
[DEBUG] Configuring mojo 'com.github.searls:jasmine-maven-plugin:1.1.0:generateManualRunner' with basic configurator -->
[DEBUG]   (f) browserVersion = FIREFOX_3_6
[DEBUG]   (f) debug = false
[DEBUG]   (f) format = documentation
[DEBUG]   (f) haltOnFailure = true
[DEBUG]   (f) jasmineTargetDir = d:\usr\workspace\backbone.modelbinding\target\jasmine
[DEBUG]   (f) jsSrcDir = d:\usr\workspace\backbone.modelbinding\src\main\javascript
[DEBUG]   (f) jsTestSrcDir = d:\usr\workspace\backbone.modelbinding\src\test\javascript\specs
[DEBUG]   (f) junitXmlReportFileName = TEST-jasmine.xml
[DEBUG]   (f) manualSpecRunnerHtmlFileName = ManualSpecRunner.html
[DEBUG]   (f) mavenProject = MavenProject: com.sarxos:backbone-modelbinding:0.5.1 @ d:\usr\workspace\backbone.modelbinding\pom.xml
[DEBUG]   (f) packageDir = d:\usr\workspace\backbone.modelbinding\target\backbone-modelbinding-0.5.1
[DEBUG]   (f) packageJavaScriptPath = js
[DEBUG]   (f) preloadSources = [src/test/javascript/lib/jquery.js, src/test/javascript/lib/underscore.js, src/test/javascript/lib/backbone.js, src/test/javascript/app/sample.backbone.app.js, src/test/javascript/lib/jasmine-dom-fixtures.js, src/test/javascript/lib/jasmine-dom-matchers.js]
[DEBUG]   (f) serverPort = 8234
[DEBUG]   (f) specDirectoryName = spec
[DEBUG]   (f) specRunnerHtmlFileName = SpecRunner.html
[DEBUG]   (f) specRunnerTemplate = DEFAULT
[DEBUG]   (f) srcDirectoryName = src
[DEBUG]   (f) timeout = 300
[DEBUG]   (f) webDriverClassName = org.openqa.selenium.htmlunit.HtmlUnitDriver
[DEBUG] -- end configuration --
[INFO] Generating runner 'ManualSpecRunner.html' in the Jasmine plugin's target directory to open in a browser to facilitate faster feedback.
[INFO] SpecRunnerTemplate DEFAULT
[INFO] Skipping spec runner generation, because an identical spec runner already exists.

And here you can see that configuration for jasmine:test and jasmine:bdd has not been correctly read:

mvn clean jasmine:test
mvn clean jasmine:bdd
    <script type="text/javascript" src="src/main/javascript/backbone.modelbinding.js"></script>
    <script type="text/javascript" src="src/test/javascript/app/sample.backbone.app.js"></script>
    <script type="text/javascript" src="src/test/javascript/lib/backbone.js"></script>
    <script type="text/javascript" src="src/test/javascript/lib/jasmine-dom-fixtures.js"></script>
    <script type="text/javascript" src="src/test/javascript/lib/jasmine-dom-matchers.js"></script>
    <script type="text/javascript" src="src/test/javascript/lib/jquery.js"></script>
    <script type="text/javascript" src="src/test/javascript/lib/underscore.js"></script>
    <script type="text/javascript" src="src/test/javascript/specs/checkboxConventionBindings.spec.js"></script>
[INFO] --- jasmine-maven-plugin:1.1.0:test (default-cli) @ backbone-modelbinding ---
[DEBUG] Configuring mojo com.github.searls:jasmine-maven-plugin:1.1.0:test from plugin realm ClassRealm[plugin>com.github.searls:jasmine-maven-plugin:1.1.0, parent: sun.misc.Launcher$AppClassLoader@d9f9c3]
[DEBUG] Configuring mojo 'com.github.searls:jasmine-maven-plugin:1.1.0:test' with basic configurator -->
[DEBUG]   (f) browserVersion = FIREFOX_3
[DEBUG]   (f) debug = false
[DEBUG]   (f) format = documentation
[DEBUG]   (f) haltOnFailure = true
[DEBUG]   (f) jasmineTargetDir = d:\usr\workspace\backbone.modelbinding\target\jasmine
[DEBUG]   (f) jsSrcDir = d:\usr\workspace\backbone.modelbinding\src\main\javascript
[DEBUG]   (f) jsTestSrcDir = d:\usr\workspace\backbone.modelbinding\src\test\javascript
[DEBUG]   (f) junitXmlReportFileName = TEST-jasmine.xml
[DEBUG]   (f) manualSpecRunnerHtmlFileName = ManualSpecRunner.html
[DEBUG]   (f) mavenProject = MavenProject: com.sarxos:backbone-modelbinding:0.5.1 @ d:\usr\workspace\backbone.modelbinding\pom.xml
[DEBUG]   (f) packageDir = d:\usr\workspace\backbone.modelbinding\target\backbone-modelbinding-0.5.1
[DEBUG]   (f) packageJavaScriptPath = js
[DEBUG]   (f) serverPort = 8234
[DEBUG]   (f) specDirectoryName = spec
[DEBUG]   (f) specRunnerHtmlFileName = SpecRunner.html
[DEBUG]   (f) specRunnerTemplate = DEFAULT
[DEBUG]   (f) srcDirectoryName = src
[DEBUG]   (f) timeout = 300
[DEBUG]   (f) webDriverClassName = org.openqa.selenium.htmlunit.HtmlUnitDriver
[DEBUG] -- end configuration --
sarxos commented 12 years ago

The only solution I found is to add second execution with exactly the same configuration but with bdd goal and generate-sources phase specified directly in configuration. This will cause both mvn test and mvn jasmine:test running correctly. However in this case mvn jasmine:bdd still doesn't work, dunno why...

<plugin>
    <groupId>com.github.searls</groupId>
    <artifactId>jasmine-maven-plugin</artifactId>
    <version>1.1.0</version>
    <executions>
        <execution>
            <id>jasmine</id>
            <goals>
                <goal>generateManualRunner</goal>
                <goal>resources</goal>
                <goal>testResources</goal>
                <goal>test</goal>
                <goal>preparePackage</goal>
            </goals>
            <configuration>
                <preloadSources>
                    <source>src/test/javascript/lib/jquery.js</source>
                    <source>src/test/javascript/lib/underscore.js</source>
                    <source>src/test/javascript/lib/backbone.js</source>
                    <source>src/test/javascript/app/sample.backbone.app.js</source>
                    <source>src/test/javascript/lib/jasmine-dom-fixtures.js</source>
                    <source>src/test/javascript/lib/jasmine-dom-matchers.js</source>                            
                </preloadSources>
                <jsTestSrcDir>src/test/javascript/specs</jsTestSrcDir>
                <browserVersion>FIREFOX_3_6</browserVersion>
            </configuration>
        </execution>
        <execution>
            <id>jasmine-bdd</id>
            <phase>generate-sources</phase>
            <goals>
                <goal>bdd</goal>
            </goals>
            <configuration>
                <preloadSources>
                    <source>src/test/javascript/lib/jquery.js</source>
                    <source>src/test/javascript/lib/underscore.js</source>
                    <source>src/test/javascript/lib/backbone.js</source>
                    <source>src/test/javascript/app/sample.backbone.app.js</source>
                    <source>src/test/javascript/lib/jasmine-dom-fixtures.js</source>
                    <source>src/test/javascript/lib/jasmine-dom-matchers.js</source>                            
                </preloadSources>
                <jsTestSrcDir>src/test/javascript/specs</jsTestSrcDir>
                <browserVersion>FIREFOX_3_6</browserVersion>
            </configuration>
        </execution>
    </executions>
</plugin>
sarxos commented 12 years ago

One more note - with above configuration mvn install always run ServerMojo... I think I will simply add new profile since this issue is to strange for me.

sarxos commented 12 years ago

Profile solution to run bdd goal:

    <profiles>
        <profile>
            <id>bdd</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>com.github.searls</groupId>
                        <artifactId>jasmine-maven-plugin</artifactId>
                        <version>1.1.0</version>
                        <executions>
                            <execution>
                                <id>jasmine-bdd</id>
                                <phase>generate-sources</phase>
                                <goals>
                                    <goal>bdd</goal>
                                </goals>
                                <configuration>
                                    <preloadSources>
                                        <source>src/test/javascript/lib/jquery.js</source>
                                        <source>src/test/javascript/lib/underscore.js</source>
                                        <source>src/test/javascript/lib/backbone.js</source>
                                        <source>src/test/javascript/app/sample.backbone.app.js</source>
                                        <source>src/test/javascript/lib/jasmine-dom-fixtures.js</source>
                                        <source>src/test/javascript/lib/jasmine-dom-matchers.js</source>                            
                                    </preloadSources>
                                    <jsTestSrcDir>src/test/javascript/specs</jsTestSrcDir>
                                    <browserVersion>FIREFOX_3_6</browserVersion>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>

    <build>
        <plugins>
            <plugin>
                <groupId>com.github.searls</groupId>
                <artifactId>jasmine-maven-plugin</artifactId>
                <version>1.1.0</version>
                <executions>
                    <execution>
                        <id>jasmine</id>
                        <goals>
                            <goal>generateManualRunner</goal>
                            <goal>resources</goal>
                            <goal>testResources</goal>
                            <goal>test</goal>
                            <goal>preparePackage</goal>
                        </goals>
                        <configuration>
                            <preloadSources>
                                <source>src/test/javascript/lib/jquery.js</source>
                                <source>src/test/javascript/lib/underscore.js</source>
                                <source>src/test/javascript/lib/backbone.js</source>
                                <source>src/test/javascript/app/sample.backbone.app.js</source>
                                <source>src/test/javascript/lib/jasmine-dom-fixtures.js</source>
                                <source>src/test/javascript/lib/jasmine-dom-matchers.js</source>                            
                            </preloadSources>
                            <jsTestSrcDir>src/test/javascript/specs</jsTestSrcDir>
                            <browserVersion>FIREFOX_3_6</browserVersion>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
searls commented 12 years ago

Apologies for skimming your issue, but I believe you need to move your

tag under and not under the in order to use the prefix shortcuts.
sarxos commented 12 years ago

Thank you Searls! That resolved my issue :D Really appreciate your help :)

sarxos commented 12 years ago

For the the other interested ones - this is correct configuration:

<plugin>
    <groupId>com.github.searls</groupId>
    <artifactId>jasmine-maven-plugin</artifactId>
    <version>1.1.0</version>
    <executions>
        <execution>
            <id>jasmine</id>
            <goals>
                <goal>generateManualRunner</goal>
                <goal>resources</goal>
                <goal>testResources</goal>
                <goal>test</goal>
                <goal>preparePackage</goal>
                <goal>bdd</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <preloadSources>
            <source>src/test/javascript/lib/jquery.js</source>
            <source>src/test/javascript/lib/underscore.js</source>
            <source>src/test/javascript/lib/backbone.js</source>
            <source>src/test/javascript/app/sample.backbone.app.js</source>
            <source>src/test/javascript/lib/jasmine-dom-fixtures.js</source>
            <source>src/test/javascript/lib/jasmine-dom-matchers.js</source>                            
        </preloadSources>
        <jsTestSrcDir>src/test/javascript/specs</jsTestSrcDir>
        <browserVersion>FIREFOX_3_6</browserVersion>
    </configuration>
</plugin>