Dec 14, 2014

Robot framework + Selenium + Continuous integration σε Weblogic

Ένα από τα πιο ισχυρά χαρακτηριστικά της έκδοσης 12c του Oracle Fusion Middleware είναι η υποστήριξη του Maven τόσο σχεδιαστικά (στον JDeveloper) όσο και εκτελεστικά σε σχέση με τον Weblogic. Για πρώτη φορά μάλιστα υπάρχει και επίσημος οδηγός της Oracle για Continuous Integration. Σε αυτό το άρθρο θα ήθελα να τονίσω την εντυπωσιακή ευκολία κατάρτισης μιας ροής που θα κάνει deploy μια εφαρμογή στον Weblogic Server και έπειτα θα εκτελεί acceptance tests γραμμένα στο Robot framework, σε ένα περιβάλλον continuous integration (πχ Jenkins ή Hudson)

Ως προς την κατάρτιση των acceptance tests και την εκτέλεση τους μέσω Maven, υπάρχει ένα ειδικό plugin του Robot. H τοποθεσία των σεναρίων ελέγχου αναμένεται στην διαδρομή: src/test/robotframework/acceptance. Προκειμένου τα web tests μας να έχουν πρόσβαση στην Selenium βιβλιοθήκη αρκεί να προσθέσουμε το dependency για την Java Selenium2 βιβλιοθήκη:

 <dependency>  
   <groupId>com.github.markusbernhardt</groupId>  
   <artifactId>robotframework-selenium2library-java</artifactId>  
   <version>1.4.0.7</version>  
   <scope>test</scope>  
 </dependency>  

Στα πλαίσια του Maven πρέπει να ορίσουμε το Weblogic deployment plugin καθώς και αυτό του Robot. Στο παράδειγμα μας, μπορούμε να αναθέσουμε μεταβλητές για τα Robot test scripts μας (όπως αυτό του appurl) Επίσης, τα tags που θέλουμε να εκτελεστούν (για παράδειγμα τα sanity tests και όχι τα load)

 <plugin>  
     <groupId>com.oracle.weblogic</groupId>  
     <artifactId>weblogic-maven-plugin</artifactId>  
     <version>12.1.3-0-0</version>  
     <configuration>  
      <adminurl>${weblogic.admin.url}</adminurl>  
      <user>${weblogic.username}</user>  
      <password>${weblogic.passwd}</password>  
      <upload>true</upload>  
      <action>deploy</action>  
      <remote>true</remote>  
      <verbose>true</verbose>  
      <targets>${weblogic.targets}</targets>  
      <source>${basedir}/target/myapp-${project.version}.ear</source>  
      <name>moj-gn</name>  
     </configuration>  
     <executions>  
      <execution>  
       <phase>pre-integration-test</phase>  
       <goals>  
        <goal>deploy</goal>  
       </goals>  
      </execution>  
     </executions>  
    </plugin>  
   <plugin>  
     <groupId>org.robotframework</groupId>  
     <artifactId>robotframework-maven-plugin</artifactId>  
     <version>1.4.3</version>  
     <configuration>  
     <variables>  
     <variable>appurl:${myappurl}</variable>  
   </variables>  
     <includes>  
      <tag>sanity</tag>  
     </includes>  
     <excludes>  
     <tag>load</tag>  
     </excludes>  
     </configuration>  
     <executions>  
      <execution>  
       <goals>  
        <goal>run</goal>  
       </goals>  
      </execution>  
     </executions>  
    </plugin>  
Στον υπολογιστή του CI θα πρέπει να έχουν εγκατασταθεί:

  • ένας browser (πχ firefox)
  • o X virtual frame buffer και να έχει ξεκινήσει ως service
Όλα αυτά στο Ubuntu γίνονται με την εντολή: sudo apt-get install firefox xvfb

Τέλος στον Jenkins/Hudson, αρκεί να θέσουμε την μεταβλητή DISPLAY στην τιμή :99.
Στο επόμενο deployment του Weblogic, θα εκτελεστούν και τα tests μας. Εντυπωσιακό !

No comments: