wsl 0.1.5 → 0.1.6

Sign up to get free protection for your applications and to get access to all the features.
@@ -12,4 +12,8 @@
12
12
  * 1 major improvement
13
13
  * Checked in code to Rubyforge
14
14
  * 2 bug fixes
15
- * None identified/fixed this release.
15
+ * None identified/fixed this release.
16
+
17
+ == 0.1.6 24/6/2009
18
+
19
+ * rdoc formatting and released.
data/Manifest CHANGED
@@ -14,5 +14,8 @@ lib/wsl.rb
14
14
  lib/wslPrivate.rb
15
15
  lib/wslSuite.rb
16
16
  Manifest
17
+ misc/index.html
18
+ misc/rubyforge-ssh-svn.txt
19
+ misc/wsl-gem-creation.txt
17
20
  Rakefile
18
21
  README.txt
data/README.txt CHANGED
@@ -1,6 +1,11 @@
1
- WSL is released under the GNU Public Licence.
1
+ WSL is released under the GNU Public Licence (http://www.gnu.org/copyleft/gpl.html).
2
2
 
3
- Go to http;//wsl.xqoob.com for more details.
3
+ The WATiR Scripting Language is a domain specific language for WATiR.
4
+ WSL lowers the barrier to entry in using WATiR.
5
+ WSL hides most of the complexities of WATiR tests and is accessible enough for non-developers to use.
6
+
7
+ More information on WSL can be found at http://wsl.xqoob.com
8
+ The source code can be downloaded from http://rubyforge.org/projects/wsl/
4
9
 
5
10
  NOTE: if after installing WSL you get the following error -
6
11
  "C:/Ruby/lib/ruby/gems/1.8/gems/windows-pr-0.9.3/lib/windows/thread.rb:59:
@@ -8,3 +13,6 @@ NOTE: if after installing WSL you get the following error -
8
13
  run these commands-
9
14
  $> Gem uninstall windows-pr
10
15
  $> Gem install windows-pr
16
+
17
+ Last updated 24 June 2009
18
+ Wadud Ruf
data/Rakefile CHANGED
@@ -2,7 +2,7 @@ require 'rubygems'
2
2
  require 'rake'
3
3
  require 'echoe'
4
4
 
5
- spec = Echoe.new('wsl', '0.1.5') do |s|
5
+ spec = Echoe.new('wsl', '0.1.6') do |s|
6
6
  s.platform = Gem::Platform::RUBY
7
7
  s.author = "Wadud Ruf"
8
8
  s.email = "wadud.ruf@xqoob.com"
@@ -2,8 +2,12 @@ require "watir"
2
2
  require "watir/watir_simple"
3
3
  require "utils/Logger"
4
4
 
5
-
6
- class BrowserContext
5
+ ##
6
+ # IEBrowserContext is an extension of Watir::Simple and is the core class
7
+ # through which all calls to Internet Explorer are made.
8
+ # IEBrowserContext should not be referred to directly within any WSL test scripts.
9
+ #
10
+ class IEBrowserContext
7
11
  include Watir::Simple
8
12
  include Watir
9
13
  include Test::Unit::Assertions
@@ -12,13 +16,12 @@ class BrowserContext
12
16
  attr_reader :logger # Readonly access to logger.
13
17
 
14
18
  ##
15
- # Initialises a new BrowserContext object.
19
+ # Initialises a new IEBrowserContext object.
16
20
  # Essentially this is inherits from Watir.Simple,
17
- # and uses it's class variable '@@browser'.
21
+ # and uses it's class variable #browser.
18
22
  #
19
- # testName: The name you want to give the test.
20
- # logFile: The file you want to log to. Defaults to
21
- # a log file with the same name as the script in the logs directory.
23
+ # * testName: The name you want to give the test.
24
+ # * logFile: The file you want to log to. Defaults to a log file with the same name as the script in the logs directory.
22
25
  #
23
26
  def initialize(testName=nil, logFile=nil)
24
27
  # Set the test name.
@@ -50,7 +53,7 @@ class BrowserContext
50
53
  end
51
54
 
52
55
  ##
53
- # Provides access to the browser class variable.
56
+ # Provides access to the Watir::Simple::browser class variable.
54
57
  #
55
58
  def browser
56
59
  return @@browser
@@ -58,15 +61,20 @@ class BrowserContext
58
61
 
59
62
  ##
60
63
  # Attaches to a titled browser window.
64
+ # * windowTitle: The titled window to attach to.
61
65
  #
62
66
  def attach(windowTitle)
63
67
  @@browser = Watir::IE.attach(:title, windowTitle)
64
68
  end
65
69
 
66
70
  ##
67
- # The tags which are valid within the browser context.
71
+ # The tags which are within scope of the browser context.
72
+ # First class functions make calls based on this.
73
+ #
68
74
  # Note: Ordering of the tags is important.
69
75
  #
76
+ # * Returns an arraylist of string objects referring to the Watir::Simple tags that are within scope.
77
+ #
70
78
  def tagsInContext()
71
79
  %w[button link image div span text_field checkbox radio select_list]
72
80
  end
@@ -20,9 +20,11 @@ module Wsl
20
20
  @@HEADER = "======"
21
21
  @@localCacheFile = ".\\logs\\.cache\\TestSummary.dat"
22
22
 
23
+ #--
23
24
  # Static methods to get log level (cannot assign to these).
24
25
  # Within class, but outside of method, use 'self.debug' to call.
25
26
  # within method use 'CustomLogger.debug' to call.
27
+ #++
26
28
  def self.debug; "debug"; end
27
29
  def self.info; "info"; end
28
30
  def self.warn; "warn"; end
data/lib/wsl.rb CHANGED
@@ -1,21 +1,27 @@
1
+ ##
2
+ # This file contains the core WSL keywords that are used to write test scripts.
3
+ # Refer to http://wsl.xqoob.com for examples on how to use these.
4
+ ##
5
+
1
6
  require "IEContext"
2
7
  require "wslPrivate"
3
8
  require "watir/contrib/visible"
4
9
 
5
10
  ##
6
- # Starts the test.
11
+ # Starts the test. All test scripts should have this as the
12
+ # first statement.
7
13
  #
8
- # testName: the name of the test.
9
- # logFile: the file to log to.
14
+ # * testName: the name of the test.
15
+ # * logFile: the file to log to.
10
16
  #
11
17
  def start(testName, logFile=nil)
12
- @myBrowser = BrowserContext.new(testName, logFile)
18
+ @myBrowser = IEBrowserContext.new(testName, logFile)
13
19
  end
14
20
 
15
21
  ##
16
22
  # Opens a new browser with the given url.
17
23
  #
18
- # url: the url to point the browser to.
24
+ # * url: The url to point the browser to.
19
25
  #
20
26
  def open_url(url)
21
27
  @myBrowser.logger.logStep("Opening browser at url: '" + url + "'")
@@ -35,7 +41,9 @@ end
35
41
 
36
42
  ##
37
43
  # Attaches the test to a new browser window
44
+ #--
38
45
  # TODO: How to close the old window?
46
+ #++
39
47
  #
40
48
  # windowTitle: the name of the new window to attach to
41
49
  #
@@ -47,8 +55,9 @@ end
47
55
  ##
48
56
  # Closes the attached browser window.
49
57
  #
58
+ # * windowTitle: Closes the currently active browser window, unless the title of another browser window is specified.
59
+ #
50
60
  def close(windowTitle=nil)
51
-
52
61
  # Attach to the browser with the name passed in.
53
62
  attach(windowTitle) if windowTitle != nil
54
63
 
@@ -59,7 +68,7 @@ end
59
68
  ##
60
69
  # Navigates to the given url.
61
70
  #
62
- # url: the url to navigate to.
71
+ # * url: the url to navigate to.
63
72
  #
64
73
  def go_to(url)
65
74
  @myBrowser.logger.logStep("Navigating to url: '" + url + "'")
@@ -92,7 +101,7 @@ end
92
101
  #
93
102
  def total_summary
94
103
  if ! defined? @myBrowser then
95
- @myBrowser = BrowserContext.new()
104
+ @myBrowser = IEBrowserContext.new()
96
105
  end
97
106
 
98
107
  @myBrowser.logger.totalSummary
@@ -106,7 +115,7 @@ end
106
115
  #
107
116
  def clear_cache
108
117
  if ! defined? @myBrowser then
109
- @myBrowser = BrowserContext.new()
118
+ @myBrowser = IEBrowserContext.new()
110
119
  end
111
120
 
112
121
  # Clear the test cache so as not to corrupt the test summary.
@@ -115,13 +124,17 @@ end
115
124
 
116
125
  ##
117
126
  # Enters text in the named field.
118
- # field: The id of the html field.
119
- # value: The value you want to set.
127
+ # * what: The value of the attribute used to identify the element
128
+ # * how: The attribute used to identify the element
129
+ # * value: The text you want to enter.
120
130
  #
131
+ #--
121
132
  # def enter_text_in(field, value)
122
133
  # @myBrowser.logger.logStep("Entering text into field '" + field + "' with value '" + value + "'")
123
134
  # @myBrowser.enter_text_into_field_with_id(field, value)
124
135
  # end
136
+ #++
137
+ #
125
138
  def enter_text_in(what, how=":id", value=nil)
126
139
  @myBrowser.logger.logStep("Entering text into html element with #{how} '" + what + "'")
127
140
 
@@ -150,9 +163,9 @@ TEMPLATE
150
163
  end
151
164
 
152
165
  ##
153
- # Fires an onKeyPress event for the given textbox.
166
+ # Fires a javascript onKeyPress event for the given textbox.
154
167
  #
155
- # field: The textbox to fire the event for (HTML id).
168
+ # * field: The textbox to fire the event for (HTML id).
156
169
  #
157
170
  def key_press_in(field)
158
171
  @myBrowser.logger.logStep("Firing onKeyPress event for: '" + field + "'")
@@ -160,9 +173,9 @@ def key_press_in(field)
160
173
  end
161
174
 
162
175
  ##
163
- # Fires an onKeyUp event for the given textbox.
176
+ # Fires a javascript onKeyUp event for the given textbox.
164
177
  #
165
- # field: The textbox to fire the event for (HTML id).
178
+ # * field: The textbox to fire the event for (HTML id).
166
179
  #
167
180
  def key_up_in(field)
168
181
  @myBrowser.logger.logStep("Firing onKeyPress event for: '" + field + "'")
@@ -170,9 +183,9 @@ def key_up_in(field)
170
183
  end
171
184
 
172
185
  ##
173
- # Fires a onMouseOver event for the given textbox.
186
+ # Fires a javascript onMouseOver event for the given textbox.
174
187
  #
175
- # field: The textbox to fire the event for (HTML id).
188
+ # * field: The textbox to fire the event for (HTML id).
176
189
  #
177
190
  def mouse_over(field)
178
191
  @myBrowser.logger.logStep("Firing onMouseOver event for: '" + field + "'")
@@ -180,9 +193,9 @@ def mouse_over(field)
180
193
  end
181
194
 
182
195
  ##
183
- # Fires a onMouseDown event for the given textbox.
196
+ # Fires a javascript onMouseDown event for the given textbox.
184
197
  #
185
- # field: The textbox to fire the event for (HTML id).
198
+ # * field: The textbox to fire the event for (HTML id).
186
199
  #
187
200
  def mouse_down(field)
188
201
  @myBrowser.logger.logStep("Firing onMouseDown event for: '" + field + "'")
@@ -190,10 +203,14 @@ def mouse_down(field)
190
203
  end
191
204
 
192
205
  ##
193
- # Selects the named element.
206
+ # Selects the named element ideally should be used with checkboxes, radio
207
+ # buttons and dropdown lists. When set to true will select the checkbox
208
+ # or radio button. When selecting a value from a dropdown list it uses
209
+ # the passed in value.
194
210
  #
195
- # what: The element to select.
196
- # value: if specified true checks it, false unchecks it.
211
+ # * what: the attribute value of the element we want to click
212
+ # * how: the attribute we want to use to uniquely identify the element
213
+ # * value: defaults to true, otherwise the value of the dropdown list.
197
214
  #
198
215
  def select(what, how=":id", value=true)
199
216
  @myBrowser.logger.logStep("Selecting html element with #{how} '" + what + "'")
@@ -224,8 +241,11 @@ end
224
241
 
225
242
  ##
226
243
  # Clicks the HTML element with the id specified. Note if multiple elements
227
- # are present it will click the first occurence of it only. The order it
228
- # searches in is - button, link, image, div, span, and finally text_field.
244
+ # are present it will click the first occurence of it only. The scope and
245
+ # order it searches in is viewable by calling elements_in_context.
246
+ #
247
+ # * what: the attribute value of the element we want to click
248
+ # * how: the attribute we want to use to uniquely identify the element
229
249
  #
230
250
  def click(what, how=":id")
231
251
  @myBrowser.logger.logStep("Clicking on html element with #{how} '" + what + "'")
@@ -250,12 +270,15 @@ TEMPLATE
250
270
  end
251
271
 
252
272
  ##
253
- # Waits for the HTML element with the id specified to exist on screen.
273
+ # Waits for the HTML element to exist on screen.
254
274
  # Note if multiple elements are present it will look for the first occurence
255
275
  # of it only or until the timeout (in seconds) is exceeded.
256
276
  #
257
- # The order it searches in is -
258
- # button, link, image, div, span, and finally text_field.
277
+ # The scope and order it searches in is viewable by calling elements in context.
278
+ #
279
+ # * what: the attribute value of the element we want to click
280
+ # * how: the attribute we want to use to uniquely identify the element
281
+ # * timout: maximum amount of time to wait for (default is 60 secs).
259
282
  #
260
283
  def wait_for(what, how=":id", timeout=60)
261
284
  @myBrowser.logger.logStep("Waiting to load: '" + what + "'")
@@ -287,6 +310,8 @@ end
287
310
  # Waits for the browser to catch up. Useful for ajax calls
288
311
  # where the browser loads up some javascript.
289
312
  #
313
+ # * aMoment: How long to wait for in seconds.
314
+ #
290
315
  def wait(aMoment=0)
291
316
  if aMoment == 0 then
292
317
  @myBrowser.logger.logStep("Waiting for browser to catch up")
@@ -299,12 +324,16 @@ def wait(aMoment=0)
299
324
  end
300
325
 
301
326
  ##
302
- # Waits for a div tag to become visible or until the timeout
327
+ # Waits for the element to become visible or until the timeout
303
328
  # period has elapsed.
304
- # what: The id of the HTML div tag.
305
- # timout: maximum amount of time to wait for (default is 60 secs).
306
329
  #
330
+ # * what: the attribute value of the element we want to click
331
+ # * how: the attribute we want to use to uniquely identify the element
332
+ # * timout: maximum amount of time to wait for (default is 60 secs).
333
+ #
334
+ #--
307
335
  # TODO: Merge with wait_for method (add visible? to if condition)
336
+ #++
308
337
  #
309
338
  def wait_until_visible(what, how=":id", timeout=60)
310
339
  @myBrowser.logger.logStep("Waiting for : '" + what + "' to become visible")
@@ -336,12 +365,26 @@ TEMPLATE
336
365
  end
337
366
 
338
367
  ##
339
- # Records expected result, then asserts whether the
340
- # text is displayed on screen to verify the expected
341
- # result.
342
- #
343
- # text: The text to look for on screen.
344
- # expectedResult: The expected result we are trying to verify. - This could potentially be factored out???
368
+ # Records expected result, then asserts whether the text is displayed
369
+ # on screen to verify the expected result. This keyword polls the browser
370
+ # for the specified amount of time until the text exists on screen.
371
+ # If the text doesn't exist within the timeout period a fail is recorded.
372
+ #
373
+ # Typical usage -
374
+ # assert_text "Welcome Back", "Exists on screen for a successful login."
375
+ #
376
+ # You can also use this within conditional statements within your test script.
377
+ # If you want to do so do not enter an expectedResult for brevities sake.
378
+ # Typical usage in a conditional statement -
379
+ # if assert_text "Welcome Back" then
380
+ # click "myMail"
381
+ # else
382
+ # click "forgottenPwd"
383
+ # end
384
+ #
385
+ # * text: The text to look for on screen.
386
+ # * expectedResult: The expected result we are trying to verify.
387
+ # * timeout: how long to try asserting for until we log a fail in seconds.
345
388
  #
346
389
  def assert_text(text, expectedResult=nil, timeout=60)
347
390
  @myBrowser.logger.logExpectedResult("'" + text + "' " + expectedResult) if expectedResult != nil
@@ -374,12 +417,15 @@ def assert_text(text, expectedResult=nil, timeout=60)
374
417
  end
375
418
 
376
419
  ##
420
+ #--
377
421
  # Records expected result, then asserts whether the
378
422
  # text is NOT displayed on screen to verify the expected
379
423
  # result.
380
424
  #
381
425
  # text: The text to look for on screen.
382
426
  # expectedResult: The expected result we are trying to verify. - This could potentially be factored out???
427
+ #++
428
+ # Do not use this is to be deprecated.
383
429
  #
384
430
  def assert_text!(text, expectedResult=nil)
385
431
  @myBrowser.logger.logExpectedResult("'" + text+ "' " + expectedResult) if expectedResult != nil
@@ -408,6 +454,15 @@ def assert_text!(text, expectedResult=nil)
408
454
  end
409
455
  end
410
456
 
457
+ ##
458
+ # Asserts that all the text in the args array exists on screen.
459
+ #
460
+ # Example usage -
461
+ # assert_all_text ["value1", "value2", "value3"]
462
+ #
463
+ # * Returns true if all the text exists, false if at least one of
464
+ # values in doesn't exist.
465
+ #
411
466
  def assert_all_text(args)
412
467
  @myBrowser.logger.logExpectedResult("Asserting all text is shown on screen...")
413
468
 
@@ -432,10 +487,10 @@ end
432
487
  # currently there is no way to determine a response for an ajax call using
433
488
  # Watir (There is an outstanding development request regarding this).
434
489
  #
435
- # url: The url to match on.
436
- # expectedResult: The expected result message to show on screen.
437
- # timeout: period in seconds before registering a failed assertion.
438
- # orFailValue: a value if found in the url or body text registers a fail.
490
+ # * url: The url to match on.
491
+ # * expectedResult: The expected result message to show on screen.
492
+ # * timeout: period in seconds before registering a failed assertion.
493
+ # * orFailValue: a value if found in the url or body text registers a fail.
439
494
  #
440
495
  def assert_url(url, expectedResult="is current url.", timeout=60, orFailValue=nil)
441
496
  # Get rid of the query string portion.
@@ -479,13 +534,41 @@ end
479
534
  ##
480
535
  # Logs a comment.
481
536
  #
482
- # text: The comment to log.
537
+ # * text: The comment to log.
483
538
  #
484
539
  def rem(text)
485
540
  @myBrowser.logger.logComment(text)
486
541
  end
487
542
 
488
- def manual_test(steps)
543
+ ##
544
+ # A manual test is a fall back strategy when it is
545
+ # difficult to write automated step(s). For example you
546
+ # may have to interact with an external site as part of your
547
+ # script to click on an email link, or when registering enter a
548
+ # captcha code.
549
+ #
550
+ # manual_test is a workaround for such tricky scenarios. Essentially
551
+ # you list some steps to perform within the manual_test then record
552
+ # whether it is a pass or a fail. Note that irrespective of how many manual
553
+ # tests you have you can only record one pass or fail for all steps
554
+ # within it.
555
+ #
556
+ # Example usage -
557
+ # some automated steps
558
+ # ...
559
+ # rem "Register on the site"
560
+ # ...
561
+ # manual_test "enter the captcha"
562
+ # click "submitBtn"
563
+ # manual_test "submit registration",
564
+ # "login into email account",
565
+ # "click on registration email link"
566
+ # ...
567
+ #
568
+ # * steps: The steps to perform within the manual test.
569
+ # Textual values comma separated for each step.
570
+ #
571
+ def manual_test(*steps)
489
572
  @myBrowser.logger.log(" Manual steps to perform:")
490
573
 
491
574
  # Log the steps
@@ -514,7 +597,9 @@ end
514
597
  ##
515
598
  # Records a PASS if the link exists
516
599
  #
517
- # what: The HTML id of the link
600
+ # * what: The HTML id of the link
601
+ # * expectedResult: The expected result of this assertion
602
+ # * returns true if link exists on screen
518
603
  #
519
604
  def assert_link_exists(what, expectedResult)
520
605
  @myBrowser.logger.logExpectedResult(expectedResult)
@@ -531,7 +616,9 @@ end
531
616
  ##
532
617
  # Records a PASS if the button exists
533
618
  #
534
- # what: The HTML id of the button
619
+ # * what: The HTML id of the button
620
+ # * expectedResult: The expected result of this assertion
621
+ # * returns true if button exists on screen
535
622
  #
536
623
  def assert_button_exists(what, expectedResult)
537
624
  @myBrowser.logger.logExpectedResult(expectedResult)
@@ -552,21 +639,19 @@ end
552
639
  # conditions are not met then call retryable_steps_error with appropriate message
553
640
  # to prompt for a repeat.
554
641
  #
555
- # -------------------------------------------------------------------------------
556
642
  # Example usage:
557
- # retryable_steps{
558
- # Do some steps here
559
- # ...
560
- # if pass condition is fail then
643
+ # retryable_steps{
644
+ # Do some steps here
645
+ # ...
646
+ # if pass condition is fail then
561
647
  # Do any further steps if needed
562
648
  # ...
563
649
  # # Record the error with message
564
650
  # retryable_steps_error "The steps failed you need to retry again"
565
- # end
566
- #}
567
- # -------------------------------------------------------------------------------
651
+ # end
652
+ # }
568
653
  #
569
- # &block: The block of code to pass in (must be surrounded by '{' and '}')
654
+ # * &block: The block of code to pass in (must be surrounded by '{' and '}')
570
655
  #
571
656
  def retryable_steps(&block)
572
657
  begin
@@ -584,7 +669,7 @@ end
584
669
  # If in the retryable steps the condition(s) to determine
585
670
  # pass/fail of the steps fails then call this.
586
671
  #
587
- # message: The message to display before retrying.
672
+ # * message: The message to display before retrying.
588
673
  #
589
674
  def retryable_steps_error(message)
590
675
  # TODO: Create a custom error/exception?
@@ -593,6 +678,8 @@ end
593
678
 
594
679
  ##
595
680
  # Shows all the elements in context in the order they are searched through.
681
+ # Essentially this is showing use the scope of certain keywords such as click,
682
+ # select, etc.
596
683
  #
597
684
  def elements_in_context
598
685
  rem "elements in context in order of precedence: \n[" +
@@ -1,7 +1,24 @@
1
+ ##
2
+ # This file contains the WSL keywords that are used to write suites
3
+ # for test scripts.
4
+ # Typical WSL test suite script -
5
+ # require "wslSuite"
6
+ #
7
+ # startup_script "SuiteStartup"
8
+ #
9
+ # test_suite "DemoExample",
10
+ # "ClickExample",
11
+ # "SelectExample"
12
+ #
13
+ # cleanup_script "SuiteCleanup"
14
+ #
15
+ # Refer to http://wsl.xqoob.com for examples on how to use these.
16
+ ##
17
+
1
18
  ##
2
19
  # Declare the startup scripts here.
3
20
  #
4
- # scripts: The startup scripts to load.
21
+ # * scripts: The startup scripts to load.
5
22
  #
6
23
  def startup_script(*scripts)
7
24
  scripts.each do |script|
@@ -12,7 +29,7 @@ end
12
29
  ##
13
30
  # Declare the test suite here.
14
31
  #
15
- # tests: The tests to load and execute.
32
+ # * tests: The tests to load and execute.
16
33
  #
17
34
  def test_suite(*tests)
18
35
  tests.each do |test|
@@ -23,7 +40,7 @@ end
23
40
  ##
24
41
  # Declare the cleanup scripts here.
25
42
  #
26
- # scripts: The cleanup scripts to load.
43
+ # * scripts: The cleanup scripts to load.
27
44
  #
28
45
  def cleanup_script(*scripts)
29
46
  scripts.each do |script|
@@ -0,0 +1,15 @@
1
+ <html>
2
+ <!-- Redirect to wsl homepage -->
3
+ <!-- need to scp this into /var/www/gforge-projects/wsl/index.html -->
4
+ <script>
5
+ <!--
6
+ function autoChange()
7
+ {
8
+ var timeID = setTimeout("location.href= 'http://wsl.xqoob.com'", 0)
9
+ }
10
+ //-->
11
+ </script>
12
+
13
+ <body onload="autoChange()">
14
+ </body>
15
+ </html>
@@ -0,0 +1,6 @@
1
+ to check code in and out of rubyforge you need svn set up with
2
+ ssh tunnelling. To use tortoise svn without having to annoyingly
3
+ type in the password everytime you need putty and the plink utility.
4
+
5
+ A how to to get this setup can be found here -
6
+ http://rubyforge.org/docman/view.php/5/460/faq.html#scm
@@ -0,0 +1,26 @@
1
+ This document outlines how to create a wsl gem using rake and how to install it.
2
+ the steps are taken from http://www.linuxjournal.com/article/8967
3
+
4
+ 1. delete any existing gems WSL/pkg directory.
5
+ 2. from root dir run "rake gem" to build gem.
6
+ 3. uninstall existing wsl gem using "gem uninstall wsl"
7
+ 4. cd in pkg dir and run "gem install wsl-<version>.gem" using the correct version number.
8
+
9
+ == 22/06/2009
10
+ Update: Since moving to rubyforge and open sourcing the project wsl now uses echoe
11
+ to release. refer to https://wikihub.berkeley.edu/display/istas/How+to+Publish+a+Gem+on+Rubyforge
12
+ for details.
13
+
14
+ You need the echoe and rubyforge gems installed and configured correctly, see above url for more
15
+ details.
16
+
17
+ The steps are:-
18
+
19
+ * create manifest using "rake manifest"
20
+ * install gem locally "rake install"
21
+ * create the release package using "rubyforge create_package wsl wsl"
22
+ * release the gem using "rake release"
23
+ * create rdoc locally using "rake docs"
24
+ * release the rdoc using "rake publish_docs"
25
+
26
+
@@ -2,15 +2,15 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{wsl}
5
- s.version = "0.1.5"
5
+ s.version = "0.1.6"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Wadud Ruf"]
9
- s.date = %q{2009-06-23}
9
+ s.date = %q{2009-08-18}
10
10
  s.description = %q{WSL (WATiR Scripting Language) is a DSL built on top of WATiR that allows for the automation of web application testing through Internet Explorer.}
11
11
  s.email = %q{wadud.ruf@xqoob.com}
12
12
  s.extra_rdoc_files = ["lib/IEContext.rb", "lib/utils/Logger.rb", "lib/utils/TestSuiteCleanup.rb", "lib/utils/TestSuiteStartup.rb", "lib/wsl.rb", "lib/wslPrivate.rb", "lib/wslSuite.rb", "README.txt"]
13
- s.files = ["examples/ClickExample.rb", "examples/DemoExample.rb", "examples/DemoTestSuite.rb", "examples/GoogleSearchExample_WSL.rb", "examples/SelectExample.rb", "examples/SuiteCleanup.rb", "examples/SuiteStartup.rb", "History.txt", "lib/IEContext.rb", "lib/utils/Logger.rb", "lib/utils/TestSuiteCleanup.rb", "lib/utils/TestSuiteStartup.rb", "lib/wsl.rb", "lib/wslPrivate.rb", "lib/wslSuite.rb", "Manifest", "Rakefile", "README.txt", "wsl.gemspec"]
13
+ s.files = ["examples/ClickExample.rb", "examples/DemoExample.rb", "examples/DemoTestSuite.rb", "examples/GoogleSearchExample_WSL.rb", "examples/SelectExample.rb", "examples/SuiteCleanup.rb", "examples/SuiteStartup.rb", "History.txt", "lib/IEContext.rb", "lib/utils/Logger.rb", "lib/utils/TestSuiteCleanup.rb", "lib/utils/TestSuiteStartup.rb", "lib/wsl.rb", "lib/wslPrivate.rb", "lib/wslSuite.rb", "Manifest", "misc/index.html", "misc/rubyforge-ssh-svn.txt", "misc/wsl-gem-creation.txt", "Rakefile", "README.txt", "wsl.gemspec"]
14
14
  s.has_rdoc = true
15
15
  s.homepage = %q{http://wsl.xqoob.com}
16
16
  s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Wsl", "--main", "README.txt"]
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wsl
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 0.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Wadud Ruf
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-06-23 00:00:00 +01:00
12
+ date: 2009-08-18 00:00:00 +01:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -54,6 +54,9 @@ files:
54
54
  - lib/wslPrivate.rb
55
55
  - lib/wslSuite.rb
56
56
  - Manifest
57
+ - misc/index.html
58
+ - misc/rubyforge-ssh-svn.txt
59
+ - misc/wsl-gem-creation.txt
57
60
  - Rakefile
58
61
  - README.txt
59
62
  - wsl.gemspec