Hi, I need to document all this but I wanted to give you a heads up on our Maven2 build: * It's fully functional but requires Maven 2.1 to fully work (this is due to bugs in 2.0.6 which is fixed in 2.1). As 2.1 isn't released yet, I've made a version available at http://xwiki.org/maven-2.1-SNAPSHOT.zip * What does the m2 build currently do: - it builds everything including the standalone distribution. Note: it doesn't generate the NSIS exe yet. - we can generate artifacts for various databases (we have 3 configured: HSQLDB, MySQL and PostGreSQL). However the application/ and application-test/ modules currently only work with HSQLDB and the database/ module needs that your database be started if you're not using HSQLDB (the default). - it runs selenium tests written as junit tests and located in xwiki/application-test/src/test/it * The full build currently takes close to 3mn here. I'll exclude the functional tests from the default build as they'll start to take too long as soon as we start having more tests. I'll create a profile called "integration-tests" for running them. Our CI tool will use it. * We've installed a CI tool at http://teamcity.xwiki.org but we have some issues with the svn checkout which hangs. I need to figure out what's wrong. * What's left for the m2 build: - some fine tuning - configure it so that we can release directly on objectweb's m2 repo at the click of a button - NSIS integration - move the tests in xwiki/tests or rewrite them - review the JAR version differences with the Ant build and try to align them. It's probably a good time to upgrade all our jars to use the latest version of libraries too. * A note on Selenium tests. I've set up an infrastructure so that any tests dropped in xwiki/application-test/src/test/it gets executed. Don't hesitate to add new tests there. To whet your appetite here's an example of a login test to show you how easy it is (yeah I know, that test is easy :)): public class LoginTest extends AbstractSeleniumTestCase { public void setUp() throws Exception { super.setUp(); open("/xwiki/bin/view/Main/"); // Verify that the user isn't logged in if (isAuthenticated()) { logout(); } goToLoginPage(); } public void testLogAsAdmin() { setFieldValue("j_username", "Admin"); setFieldValue("j_password", "admin"); checkField("rememberme"); submit(); assertTrue("Admin user has not been authenticated", isAuthenticated()); } public void testLogWithWrongPassword() { setFieldValue("j_username", "Admin"); setFieldValue("j_password", "wrong password"); submit(); assertTextPresent("Wrong password"); } public void testLogWithInvalidUsername() { setFieldValue("j_username", "non existent user"); setFieldValue("j_password", "admin"); submit(); assertTextPresent("Wrong user name"); } } TODO: I'm going to try writing some tests for the WYSIWYG editor right now and see how hard it gets. Comments are most welcome. Thanks -Vincent