Mailinglist Archive: yast-commit (883 mails)

< Previous Next >
[yast-commit] <web-client> master : Added source Selenium IDE *.xml files
  • From: Ladislav Slezak <lslezak@xxxxxxxxxx>
  • Date: Tue, 21 Jul 2009 16:16:12 +0200
  • Message-id: <E1MTGA7-0001fb-Oy@xxxxxxxxxxxxxxxx>
ref: refs/heads/master
commit 9d2f8fcef296de464a5e705c86e3c0e410a18d08
Author: Ladislav Slezak <lslezak@xxxxxxxxxx>
Date: Tue Jul 21 16:16:12 2009 +0200

Added source Selenium IDE *.xml files

ui/src should contain Selenium IDE files, the generated Ruby scripts
should be in ui/*_test.rb files
---
webclient/test/ui/README | 6 +-
webclient/test/ui/login_test.rb | 30 +++---
webclient/test/ui/ruby-webyast.js | 105 --------------------
webclient/test/ui/src/login_test_credentials.xml | 27 +++++
webclient/test/ui/src/login_test_services_list.xml | 37 +++++++
webclient/test/ui/src/login_testsuite.xml | 15 +++
webclient/test/ui/src/ruby-webyast.js | 105 ++++++++++++++++++++
7 files changed, 200 insertions(+), 125 deletions(-)

diff --git a/webclient/test/ui/README b/webclient/test/ui/README
index 0e7e216..a142118 100644
--- a/webclient/test/ui/README
+++ b/webclient/test/ui/README
@@ -2,9 +2,9 @@ Here are UI testing scripts using Selenium framework
(http://seleniumhq.org)

Basic information:

-1. run 'rake test:ui' to start UI tests
-2. the tests have been generated from *.xml files by Selenium IDE
- (do not edit them directly, use Selenium IDE for changes and export the
tests)
+1. run 'rake test:ui' to start UI tests (or 'rake test:ui
TEST=ui/example_test.rb')
+2. the tests have been generated from src/*.xml files by Selenium IDE
+ (do not edit *.rb files directly, load *.xml file into Selenium IDE, change
it and export the tests)

See http://en.opensuse.org/YaST/Web/Development/UI_Testing for more
information.

diff --git a/webclient/test/ui/login_test.rb b/webclient/test/ui/login_test.rb
index d919bd5..1aa5549 100644
--- a/webclient/test/ui/login_test.rb
+++ b/webclient/test/ui/login_test.rb
@@ -1,27 +1,23 @@
+# Generated by ruby-webyast-0.1 Selenium formatter
+# Date: Tue Jul 21 2009 15:20:48 GMT+0200 (CET)

-require 'selenium/test_case'
+require "selenium/test_case"

-class LoginTest < Selenium::TestCase
-
- # check if the service selection is displayed at the main page
- def test_host_selection
- @selenium.open "/hosts"
- # is there the service list table?
+class Login_test < Selenium::TestCase
+
+ def test_login_test_credentials
+ @selenium.open "/"
assert @selenium.is_element_present("//div[@class='services-list']")
end

- # check if the login page is displayed after clicking on the localhost:8080
target
- def test_login_page
- @selenium.open "/hosts"
- @selenium.click "link=localhost"
+
+ def test_login_test_services_list
+ @selenium.open "/hosts?error=nohostid"
+ @selenium.click "link=exact:http://localhost:8080";
@selenium.wait_for_page_to_load "30000"
-
- # is there the login and password entry?
- assert @selenium.is_element_present("password")
assert @selenium.is_element_present("login")
+ assert @selenium.is_element_present("password")
end

-end
-
-# vim: ft=ruby

+end
diff --git a/webclient/test/ui/ruby-webyast.js
b/webclient/test/ui/ruby-webyast.js
deleted file mode 100644
index 9b5fb41..0000000
--- a/webclient/test/ui/ruby-webyast.js
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * This is a custom output formatter for Selenium IDE
- *
- * Use 'Options->Options...->Formats->Add' menu item in Selenium IDE for
loading the file.
- *
- * This formatter extends the standard Ruby formatter (ruby-rc.js)
- *
- * Extensions:
- * - exports tests using WebYaST Selenium::TestCase base class
- * (the common parts are shared in the base class)
- * - can export also whole testsuite
- * - Selenium script can contain inline Ruby code (comments starting with
"@RUBY:" string,
- * unfortunately it works only in test suite export, not in single test
case export)
- */
-
-// preload the standard Ruby RC output formatter
-load('ruby-rc.js');
-
-this.name = "ruby-webyast";
-this.plugin_version = "0.1";
-
-this.options = {
- receiver: "@selenium",
- header:
- '# Generated by ' + this.name + '-' + this.plugin_version + ' Selenium
formatter\n' +
- '# Date: ' + Date() + '\n\n' +
- 'require "selenium/test_case"\n' +
- '\n' +
- 'class ${className} < Selenium::TestCase\n' +
- ' \n' +
- ' def ${methodName}\n',
- footer:
- " end\n" +
- "end\n",
- indent: "2",
- initialIndents: "2"
-};
-
-this.configForm =
- '<description>Variable for Selenium instance</description>' +
- '<textbox id="options_receiver" />' +
- '<description>Indent</description>' +
- '<menulist id="options_indent"><menupopup>' +
- '<menuitem label="Tab" value="tab"/>' +
- '<menuitem label="1 space" value="1"/>' +
- '<menuitem label="2 spaces" value="2"/>' +
- '<menuitem label="3 spaces" value="3"/>' +
- '<menuitem label="4 spaces" value="4"/>' +
- '<menuitem label="5 spaces" value="5"/>' +
- '<menuitem label="6 spaces" value="6"/>' +
- '<menuitem label="7 spaces" value="7"/>' +
- '<menuitem label="8 spaces" value="8"/>' +
- '</menupopup></menulist>';
-
-/**
- * Returns a string representing the test suite for Ruby language (in WebYaST
format).
- *
- * @param testSuite the suite to format
- * @param filename the file the formatted suite will be saved as
- */
-function formatSuite(testSuite, filename) {
- var suiteClass = /^(\w+)/.exec(filename)[1];
- suiteClass = suiteClass[0].toUpperCase() + suiteClass.substring(1);
- suiteClass = suiteClass.replace(/ /g, '_');
-
- // header
- var formattedSuite =
- '# Generated by ' + this.name + '-' + this.plugin_version + ' Selenium
formatter\n' +
- '# Date: ' + Date() + '\n\n' +
- 'require "selenium/test_case"\n\n' +
- 'class ' + suiteClass + ' < Selenium::TestCase\n';
-
- // backup the standard options
- var opts_bak = this.options;
-
- // change the options temporarily
- this.options = {
- receiver: "@selenium",
- header: ' \n' +
- ' def ${methodName}\n',
- footer: ' end\n\n',
- indent: "2",
- initialIndents: "2"
- };
-
- // export each testcase using the temporary options
- for (var i = 0; i < testSuite.tests.length; ++i) {
- var formattedTest = format(testSuite.tests[i].content);
- // uncomment inline Ruby commands
- formattedTest = formattedTest.replace(/^([ \t]*)#[ \t]*@RUBY:[
\t]*(.*)$/mg, '$1$2');
-
- formattedSuite += formattedTest;
- }
-
- // footer
- formattedSuite += "\nend\n";
-
- // restore the standard options
- this.options = opts_bak;
-
- this.log.info('Generated testsuite: ' + filename);
-
- return formattedSuite;
-}
-
diff --git a/webclient/test/ui/src/login_test_credentials.xml
b/webclient/test/ui/src/login_test_credentials.xml
new file mode 100644
index 0000000..5b1bbde
--- /dev/null
+++ b/webclient/test/ui/src/login_test_credentials.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd";>
+<html xmlns="http://www.w3.org/1999/xhtml"; xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case";>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<link rel="selenium.base" href="" />
+<title>login_test_credentials</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr><td rowspan="1" colspan="3">login_test_credentials</td></tr>
+</thead><tbody>
+<tr>
+ <td>open</td>
+ <td>/</td>
+ <td></td>
+</tr>
+<tr>
+ <td>assertElementPresent</td>
+ <td>//div[@class='services-list']</td>
+ <td></td>
+</tr>
+
+</tbody></table>
+</body>
+</html>
diff --git a/webclient/test/ui/src/login_test_services_list.xml
b/webclient/test/ui/src/login_test_services_list.xml
new file mode 100644
index 0000000..9f47dc1
--- /dev/null
+++ b/webclient/test/ui/src/login_test_services_list.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd";>
+<html xmlns="http://www.w3.org/1999/xhtml"; xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case";>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<link rel="selenium.base" href="" />
+<title>login_test_services-list</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr><td rowspan="1" colspan="3">login_test_services-list</td></tr>
+</thead><tbody>
+<tr>
+ <td>open</td>
+ <td>/hosts?error=nohostid</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAndWait</td>
+ <td>link=exact:http://localhost:8080</td>
+ <td></td>
+</tr>
+<tr>
+ <td>assertElementPresent</td>
+ <td>login</td>
+ <td></td>
+</tr>
+<tr>
+ <td>assertElementPresent</td>
+ <td>password</td>
+ <td></td>
+</tr>
+
+</tbody></table>
+</body>
+</html>
diff --git a/webclient/test/ui/src/login_testsuite.xml
b/webclient/test/ui/src/login_testsuite.xml
new file mode 100644
index 0000000..aecf6e2
--- /dev/null
+++ b/webclient/test/ui/src/login_testsuite.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd";>
+<html xmlns="http://www.w3.org/1999/xhtml"; xml:lang="en" lang="en">
+<head>
+ <meta content="text/html; charset=UTF-8" http-equiv="content-type" />
+ <title>Test Suite</title>
+</head>
+<body>
+<table id="suiteTable" cellpadding="1" cellspacing="1" border="1"
class="selenium"><tbody>
+<tr><td><b>Test Suite</b></td></tr>
+<tr><td><a
href="login_test_credentials.xml">login_test_credentials</a></td></tr>
+<tr><td><a
href="login_test_services_list.xml">login_test_services_list</a></td></tr>
+</tbody></table>
+</body>
+</html>
diff --git a/webclient/test/ui/src/ruby-webyast.js
b/webclient/test/ui/src/ruby-webyast.js
new file mode 100644
index 0000000..9b5fb41
--- /dev/null
+++ b/webclient/test/ui/src/ruby-webyast.js
@@ -0,0 +1,105 @@
+/*
+ * This is a custom output formatter for Selenium IDE
+ *
+ * Use 'Options->Options...->Formats->Add' menu item in Selenium IDE for
loading the file.
+ *
+ * This formatter extends the standard Ruby formatter (ruby-rc.js)
+ *
+ * Extensions:
+ * - exports tests using WebYaST Selenium::TestCase base class
+ * (the common parts are shared in the base class)
+ * - can export also whole testsuite
+ * - Selenium script can contain inline Ruby code (comments starting with
"@RUBY:" string,
+ * unfortunately it works only in test suite export, not in single test
case export)
+ */
+
+// preload the standard Ruby RC output formatter
+load('ruby-rc.js');
+
+this.name = "ruby-webyast";
+this.plugin_version = "0.1";
+
+this.options = {
+ receiver: "@selenium",
+ header:
+ '# Generated by ' + this.name + '-' + this.plugin_version + ' Selenium
formatter\n' +
+ '# Date: ' + Date() + '\n\n' +
+ 'require "selenium/test_case"\n' +
+ '\n' +
+ 'class ${className} < Selenium::TestCase\n' +
+ ' \n' +
+ ' def ${methodName}\n',
+ footer:
+ " end\n" +
+ "end\n",
+ indent: "2",
+ initialIndents: "2"
+};
+
+this.configForm =
+ '<description>Variable for Selenium instance</description>' +
+ '<textbox id="options_receiver" />' +
+ '<description>Indent</description>' +
+ '<menulist id="options_indent"><menupopup>' +
+ '<menuitem label="Tab" value="tab"/>' +
+ '<menuitem label="1 space" value="1"/>' +
+ '<menuitem label="2 spaces" value="2"/>' +
+ '<menuitem label="3 spaces" value="3"/>' +
+ '<menuitem label="4 spaces" value="4"/>' +
+ '<menuitem label="5 spaces" value="5"/>' +
+ '<menuitem label="6 spaces" value="6"/>' +
+ '<menuitem label="7 spaces" value="7"/>' +
+ '<menuitem label="8 spaces" value="8"/>' +
+ '</menupopup></menulist>';
+
+/**
+ * Returns a string representing the test suite for Ruby language (in WebYaST
format).
+ *
+ * @param testSuite the suite to format
+ * @param filename the file the formatted suite will be saved as
+ */
+function formatSuite(testSuite, filename) {
+ var suiteClass = /^(\w+)/.exec(filename)[1];
+ suiteClass = suiteClass[0].toUpperCase() + suiteClass.substring(1);
+ suiteClass = suiteClass.replace(/ /g, '_');
+
+ // header
+ var formattedSuite =
+ '# Generated by ' + this.name + '-' + this.plugin_version + ' Selenium
formatter\n' +
+ '# Date: ' + Date() + '\n\n' +
+ 'require "selenium/test_case"\n\n' +
+ 'class ' + suiteClass + ' < Selenium::TestCase\n';
+
+ // backup the standard options
+ var opts_bak = this.options;
+
+ // change the options temporarily
+ this.options = {
+ receiver: "@selenium",
+ header: ' \n' +
+ ' def ${methodName}\n',
+ footer: ' end\n\n',
+ indent: "2",
+ initialIndents: "2"
+ };
+
+ // export each testcase using the temporary options
+ for (var i = 0; i < testSuite.tests.length; ++i) {
+ var formattedTest = format(testSuite.tests[i].content);
+ // uncomment inline Ruby commands
+ formattedTest = formattedTest.replace(/^([ \t]*)#[ \t]*@RUBY:[
\t]*(.*)$/mg, '$1$2');
+
+ formattedSuite += formattedTest;
+ }
+
+ // footer
+ formattedSuite += "\nend\n";
+
+ // restore the standard options
+ this.options = opts_bak;
+
+ this.log.info('Generated testsuite: ' + filename);
+
+ return formattedSuite;
+}
+
--
To unsubscribe, e-mail: yast-commit+unsubscribe@xxxxxxxxxxxx
For additional commands, e-mail: yast-commit+help@xxxxxxxxxxxx

< Previous Next >
This Thread
  • No further messages