Selenium wiki formatter (textile e altri)

Di recente avevo necessità di copiare dei test case creati con Selenium IDE su Redmine, si potrebbe allegarli ma l’intenzione è quella di mostrali come una tabella.

Ho cosi’ consultato velocemente la pagina su come creare un custom format.

Da li’, a meno di eccezioni (quali l’escape della pipe | ) ho creato questo semplice script da aggiungere nel menu opzioni di Selenium IDE nel tab formats (inserite Wiki nel campo wiki format name e sovrascrivete con il seguente contenuto):

var wiki = {
confluence:{
  start_table: "",
  end_table: "",
  header: "||Command||Target||Value||\n",
  header_row:"||#",
  start_row: "| ",
  end_row: " |\n",
  separator: " | ",
},
dokuwiki:{
  start_table: "",
  end_table: "",
  header: "^ Command ^ Target ^ Value ^\n",
  header_row:"^ # ",
  start_row: "| ",
  end_row: " |\n",
  separator: " | ",
},
mediawiki:{
  start_table: "{|border=\"1\" \n",
  end_table: "|}",
  header: "!Command\n!Target\n!Value\n",
  header_row:"!#\n",
  start_row: "|-\n|",
  end_row: "\n",
  separator: "\n|",
},
moinmoin:{
  start_table: "",
  end_table: "",
  header: "||\'\'\'Command\'\'\'||\'\'\'Target\'\'\'||\'\'\'Value\'\'\'||\n",
  header_row:"||\'\'\'#\'\'\'",
  start_row: "||",
  end_row: "||\n",
  separator: "||",
},
textile:{
  start_table: "",
  end_table: "",
  header: "|_. Command|_. Target|_. Value|\n",
  header_row:"|_. #",
  start_row: "|",
  end_row: "|\n",
  separator: "|",
},
trac:{
  start_table: "",
  end_table: "",
  header: "||= Command =||=  Target =||=  Value =||\n",
  header_row:"||= # =",
  start_row: "||",
  end_row: "||\n",
  separator: "||",
},
twiki:{
  start_table: "",
  end_table: "",
  header: "|  *Command*  |  *Target*  |  *Value*  |\n",
  header_row:"| *#*",
  start_row: "|  ",
  end_row: "  |\n",
  separator: "  |  ",
},
xwiki:{
  start_table: "",
  end_table: "",
  header: "|=Command|=Target|=Value\n",
  header_row:"|=#",
  start_row: "|",
  end_row: "\n",
  separator: "|",
}
};

function formatCommands(commands) {
  var result = '';
  var start_table =  wiki[options['wiki']]["start_table"];
  var end_table =  wiki[options['wiki']]["end_table"];
  var header = wiki[options['wiki']]["header"];
  var header_row = wiki[options['wiki']]["header_row"];
  var start_row = wiki[options['wiki']]["start_row"];
  var end_row = wiki[options['wiki']]["end_row"];
  var sep = wiki[options['wiki']]["separator"];
  var row_num = '';
  for (var i = 0; i < commands.length; i++) {
    var command = commands[i];
    if('true' == options.row)
            row_num= i+sep;
    if (command.type == 'command') {
      result += start_row + row_num+ command.command + sep + command.target + sep + command.value + end_row;
    }
  }
    if('true' == options.row)
         header = header_row+header;
    result = start_table + header + result + end_table;
  return result;
}

function parse(testCase, source) {
  var doc = source;
  var commands = [];
  var start_row = wiki[options['wiki']]["start_row"];
  var sep = wiki[options['wiki']]["separator"];
  while (doc.length > 0) {
    var line = /(.*)(\r\n|[\r\n])?/.exec(doc);
    var line2 = line[1].slice(start_row.length);
    var array = line2.split(sep);
    if (array.length >= 3) {
      var command = new Command();
      command.command = array[0];
      command.target = array[1];
      command.value = array[2];
      commands.push(command);
    }
    doc = doc.substr(line[0].length);
  }
  testCase.setCommands(commands);
}

function format(testCase, name) {
  return formatCommands(testCase.commands);
}

options = {wiki: 'confluence', row:"false"};

configForm = '<description>Choose a wiki syntax:</description>' + '<menulist id="options_wiki">'
+ 	'<menuitem label="Confluence" value="confluence"/>' +
+ 	'<menuitem label="DokuWiki" value="dokuwiki"/>' +
	'<menuitem label="MediaWiki" value="mediawiki"/>' +
	'<menuitem label="MoinMoin" value="moinmoin"/>' + '<menuitem label="Textile" value="textile"/>' + '<menuitem label="Trac" value="trac"/>' + '<menuitem label="Twiki" value="twiki"/>' + '<menuitem label="Xwiki" value="xwiki"/>' + '</menupopup>' + '</menulist>'+ '<separator class="groove"/>' + '<checkbox id="options_row" label="Row number"/>';

Dal menu delle opzioni, vedete che confluence  è impostato di default (potete abilitare anche i numeri di riga tramite la checkbox) e potete scegliere tra Confluence, DokuWiki, MediaWiki, MoinMoin, Textile (Redmine), Trac, Twiki e Xwiki.

Una volta salvato, andate in Options -> Format e scegliete Wiki, cliccate poi sul tab Source e vedete il test case nel formato wiki da voi scelto, potete poi copiare e incollare nel vostro wiki preferito.

Advertisements

XWiki 1.8.3 su Glassfish 2.1 e MySQL 5.1

Fino ad ora ho sempre avuto un debole per mediawiki (anche se non ha mai brillato per la sua interfaccia utente), ho provato oggi ad installare XWiki, un wiki realizzato in Java e rilasciato con licenza LGPL e quindi ne ho approfittato per installarlo su Glassfish.

Per un progetto avevo già provato Twiki che in complesso mi era piaciuto ma non sono stato completamente soddisfatto (alcuni problemi con la stampa pdf e editing parallelo) perciò stamani ho provato ad installare XWiki che vanta diverse caratteristiche, tra cui il fatto di scrivere applicazioni integrabili; ho notato tra l’altro che esiste anche la versione client che si può integrare con Eclipse (ok anche per Mediawiki e Twiki ho visto che esiste l’integrazione con Eclipse ma non ho mai provato).

Ho notato tra l’altro che quelli di XWiki hanno trovato hosting sulla Forge di OW2 e contemporaneamente diversi progetti dell’OW2 Consortium fanno uso di XWiki per i loro progetti come Bonita, JASMINe, JOnAS, ObjectWeb, Orchestra, Petals ma anche Exo Platform, Mandriva Club, Nuxeo.

Tornando all’installazione, tramite il pannello di Amministrazione di Glassfish effettuate il deploy del file war che scaricate da qui. Il deploy pero’ non basta, una volta fatto il deploy non potete lanciarlo subito altrimenti avete un errore del genere:

javax.servlet.ServletException: com.xpn.xwiki.XWikiException: Error number 3 in 0: Could not initialize main XWiki context
Wrapped Exception: Error number 3001 in 3: Cannot load class com.xpn.xwiki.store.migration.hibernate.XWikiHibernateMigrationManager from param xwiki.store.migration.manager.class
Wrapped Exception: Error number 0 in 3: Exception while hibernate execute
Wrapped Exception: Could not parse mapping document from resource xwiki.hbm.xml
Ciò significa che dovete configurare il file hibernate.cfg.xml dove si trovano i parametri per il database da usare. Questo file lo trovate in /domains/domain1/applications/j2ee-modules/xwiki/WEB-INF.

Io ho abilitato la configurazione di MySQL ma esistono le configurazioni di HSQLDB, PostgreSQL, Oracle e Derby e ho inoltre copiato all’interno della cartella xwiki/WEB-INF/lib il mysql connector ma non sono sicuro che sia servito.

Tuttavia ho ancora avuto il medesimo errore perchè XWiki ha creato il database xwiki con utente xwiki ma senza la password che dovrebbe essere xwiki, dunque seguendo le istruzioni, ho scritto:

mysql -u root -e “grant all privileges on xwiki.* to xwiki@localhost identified by ‘xwiki'”

e difatti connettendomi con l’utente xwiki (con la password questa volta) su MySql son riuscito a vedere il database e andando finalmente all’url:

http://localhost:8080/xwiki/bin/view/Main/

sono riuscito finalmente a vedere XWiki però non potete ancora loggarvi e dal menu in alto a destra (administration) dovete scaricare ed importare il file xar per la configurazione e così potete loggarvi con utente Admin e password admin.

Ora potete lavorare su XWiki, unica cosa non riesco ad esportare le pagine in PDF e RTF ed ho eccezioni di Xalan e Xerces, speriamo di risolvere subito.