From f482637e2cacbe1b90173e93e643baf511e06874 Mon Sep 17 00:00:00 2001 From: Daniel Ziltener Date: Mon, 16 May 2022 16:46:31 +0200 Subject: [PATCH] Refactoring progress --- src/WebDriver-Tests/WDElementTest.class.st | 25 ++++++++++++++ src/WebDriver-Tests/WebDriverTest.class.st | 36 +++------------------ src/WebDriver/WebDriver.class.st | 3 +- src/WebDriver/WebDriverGeckodriver.class.st | 11 ++++++- 4 files changed, 41 insertions(+), 34 deletions(-) create mode 100644 src/WebDriver-Tests/WDElementTest.class.st diff --git a/src/WebDriver-Tests/WDElementTest.class.st b/src/WebDriver-Tests/WDElementTest.class.st new file mode 100644 index 0000000..88bb53c --- /dev/null +++ b/src/WebDriver-Tests/WDElementTest.class.st @@ -0,0 +1,25 @@ +" +A WDElementTest is a test class for testing the behavior of WDElement +" +Class { + #name : #WDElementTest, + #superclass : #TestCase, + #instVars : [ + 'driver' + ], + #category : #'WebDriver-Tests-Base' +} + +{ #category : #running } +WDElementTest >> setUp [ + super setUp. + driver := WebDriver start: #Firefox. + driver session. +] + +{ #category : #running } +WDElementTest >> tearDown [ + driver deleteSession. + driver finalize. + super tearDown. +] diff --git a/src/WebDriver-Tests/WebDriverTest.class.st b/src/WebDriver-Tests/WebDriverTest.class.st index a228b07..5f410db 100644 --- a/src/WebDriver-Tests/WebDriverTest.class.st +++ b/src/WebDriver-Tests/WebDriverTest.class.st @@ -7,11 +7,11 @@ Class { #instVars : [ 'webdriver' ], - #category : #'WebDriver-Tests' + #category : #'WebDriver-Tests-Base' } { #category : #running } -WebDriverTest >> setUp [ +WebDriverTest >> setUp [ super setUp. webdriver := WebDriver start: #Firefox. webdriver session. @@ -20,39 +20,11 @@ WebDriverTest >> setUp [ { #category : #running } WebDriverTest >> tearDown [ webdriver deleteSession. + webdriver finalize. super tearDown. ] -{ #category : #tests } -WebDriverTest >> testFindElementInvalidCSSSelector [ - self - should: [ webdriver url: 'https://ddg.co'; findElement: '' using: WDLocationStrategy cssSelector ] - raise: WDInvalidSelector. -] - -{ #category : #tests } -WebDriverTest >> testFindElementValid [ - | result | - result := webdriver url: 'https://ddg.co'; findElement: '.logo_homepage' using: WDLocationStrategy cssSelector. - self assert: (result isString). -] - -{ #category : #tests } -WebDriverTest >> testFindElementsInvalidCSSSelector [ - self - should: [ webdriver url: 'https://ddg.co'; findElements: '' using: WDLocationStrategy cssSelector ] - raise: WDInvalidSelector. -] - -{ #category : #tests } -WebDriverTest >> testFindElementsValid [ - | result | - result := webdriver url: 'https://ddg.co'; - findElements: '.badge-link__bullet' using: WDLocationStrategy cssSelector. - self assert: result size equals: 3. -] - { #category : #tests } WebDriverTest >> testGetTitle [ - self assert: (webdriver url: 'https://cern.ch'; title) equals: 'Home | CERN' + self assert: (webdriver url: 'https://cern.ch'; title) equals: 'Home | CERN'. ] diff --git a/src/WebDriver/WebDriver.class.st b/src/WebDriver/WebDriver.class.st index 11bb0c1..a270790 100644 --- a/src/WebDriver/WebDriver.class.st +++ b/src/WebDriver/WebDriver.class.st @@ -170,7 +170,8 @@ WebDriver >> send: dict to: url using: method [ contentReader: [ :entity | result := (NeoJSONReader on: (entity contents) readStream) propertyNamesAsSymbols: true; next. result := self postprocessResult: result. - (result keys contains: #error) ifTrue: [ WDException raise: result ]. + result isDictionary ifTrue: + [ (result includesKey: #error) ifTrue: [ WDException raise: result ]. ] ]; execute. ^result. diff --git a/src/WebDriver/WebDriverGeckodriver.class.st b/src/WebDriver/WebDriverGeckodriver.class.st index 3e69c93..d926c20 100644 --- a/src/WebDriver/WebDriverGeckodriver.class.st +++ b/src/WebDriver/WebDriverGeckodriver.class.st @@ -18,6 +18,7 @@ WebDriverGeckodriver class >> startWithOptions: options [ subproc := OSSUnixSubprocess new command: 'geckodriver'. [ subproc run ] fork. + (Delay forSeconds: 1) wait. ^ self new browser: subproc server: '127.0.0.1' @@ -40,5 +41,13 @@ WebDriverGeckodriver >> initialize [ { #category : #'private - utilities' } WebDriverGeckodriver >> postprocessResult: result [ - ^ result at: #value. + + | actualResult | + actualResult := result isDictionary + ifTrue: [ + (result includesKey: #value) + ifTrue: [ result at: #value ] + ifFalse: [ result ] ] + ifFalse: [ result ]. + ^ actualResult ]