Skip to content

fix creating sessions#31

Merged
KazuCocoa merged 2 commits intoappium:masterfrom
KazuCocoa:fix_createsession
Dec 16, 2017
Merged

fix creating sessions#31
KazuCocoa merged 2 commits intoappium:masterfrom
KazuCocoa:fix_createsession

Conversation

@KazuCocoa
Copy link
Copy Markdown
Member

@KazuCocoa KazuCocoa commented Dec 16, 2017

Fix createSession to work after appium/appium#9791

Appium: 1ac29f923658e50bd57fd0769dc781583426e542 (1.7.2-beta3)

test:

$ rake test:func:ios TEST=test/functional/ios/driver_test.rb

After fixing

[HTTP] --> POST /wd/hub/session {"desiredCapabilities":{"platformName":"ios","automationName":"XCUITest","app":"/Users/kazuaki/GitHub/ruby_lib_core/test/functional/app/UICatalog.app","platformVersion":"10.3","deviceName":"iPhone Simulator","useNewWDA":true,"someCapability":"some_capability"},"capabilities":{"firstMatch":[{"platformName":"ios","automationName":"XCUITest","app":"/Users/kazuaki/GitHub/ruby_lib_core/test/functional/app/UICatalog.app","platformVersion":"10.3","deviceName":"iPhone Simulator","useNewWDA":true,"someCapability":"some_capability"}]}}
[debug] [MJSONWP] Calling AppiumDriver.createSession() with args: [{"platformName":"ios","automationName":"XCUITest","app":"/Users/kazuaki/GitHub/ruby_lib_core/test/functional/app/UICatalog.app","platformVersion":"10.3","deviceName":"iPhone Simulator","useNewWDA":true,"someCapability":"some_capability"},null,{"firstMatch":[{"platformName":"ios","automationName":"XCUITest","app":"/Users/kazuaki/GitHub/ruby_lib_core/test/functional/app/UICatalog.app","platformVersion":"10.3","deviceName":"iPhone Simulator","useNewWDA":true,"someCapability":"some_capability"}]}]
[debug] [BaseDriver] Event 'newSessionRequested' logged at 1513639570120 (08:26:10 GMT+0900 (JST))
[Appium] Creating new XCUITestDriver (v2.61.0) session
[Appium] Capabilities:
[Appium]   platformName: ios
[Appium]   automationName: XCUITest
[Appium]   app: /Users/kazuaki/GitHub/ruby_lib_core/test/functional/app/UICatalog.app
[Appium]   platformVersion: 10.3
[Appium]   deviceName: iPhone Simulator
[Appium]   useNewWDA: true
[Appium]   someCapability: some_capability
[BaseDriver] The following capabilities were provided, but are not recognized by appium: someCapability.
[BaseDriver] Session created with session id: cfa6e5cb-df7c-4725-a68f-ae93c27c5488

Before

[Appium] Welcome to Appium v1.7.2-beta3 (REV 1ac29f923658e50bd57fd0769dc781583426e542)
[Appium] Appium REST http interface listener started on 0.0.0.0:4723
[HTTP] --> POST /wd/hub/session {"desiredCapabilities":{"platformName":"ios","automationName":"XCUITest","app":"/Users/kazuaki/GitHub/ruby_lib_core/test/functional/app/UICatalog.app","platformVersion":"10.3","deviceName":"iPhone Simulator","useNewWDA":true,"someCapability":"some_capability"},"capabilities":{"firstMatch":[{"platformName":"ios"}]}}
[debug] [MJSONWP] Calling AppiumDriver.createSession() with args: [{"platformName":"ios","automationName":"XCUITest","app":"/Users/kazuaki/GitHub/ruby_lib_core/test/functional/app/UICatalog.app","platformVersion":"10.3","deviceName":"iPhone Simulator","useNewWDA":true,"someCapability":"some_capability"},null,{"firstMatch":[{"platformName":"ios"}]}]
[debug] [BaseDriver] Event 'newSessionRequested' logged at 1513639723109 (08:28:43 GMT+0900 (JST))
[Appium] Creating new IosDriver (v1.28.0) session
[Appium] Capabilities:
[Appium]   platformName: ios
[BaseDriver] SessionNotCreatedError: A new session could not be created. Details: The desiredCapabilities object was not valid for the following reason(s):  deviceName can't be blank,
    at IosDriver.validateDesiredCaps (/Users/kazuaki/GitHub/appium/node_modules/appium-base-driver/lib/basedriver/driver.js:184:25)
    at IosDriver.validateDesiredCaps (/Users/kazuaki/GitHub/appium/node_modules/appium-ios-driver/lib/driver.js:51:16)
    at IosDriver.callee$0$0$ (/Users/kazuaki/GitHub/appium/node_modules/appium-base-driver/lib/basedriver/commands/session.js:23:8)
    at tryCatch (/Users/kazuaki/GitHub/appium/node_modules/babel-runtime/regenerator/runtime.js:67:40)
    at GeneratorFunctionPrototype.invoke [as _invoke] (/Users/kazuaki/GitHub/appium/node_modules/babel-runtime/regenerator/runtime.js:315:22)
    at GeneratorFunctionPrototype.prototype.(anonymous function) [as next] (/Users/kazuaki/GitHub/appium/node_modules/babel-runtime/regenerator/runtime.js:100:21)
    at invoke (/Users/kazuaki/GitHub/appium/node_modules/babel-runtime/regenerator/runtime.js:136:37)
    at enqueueResult (/Users/kazuaki/GitHub/appium/node_modules/babel-runtime/regenerator/runtime.js:185:17)
    at Promise (<anonymous>)
    at F (/Users/kazuaki/GitHub/appium/node_modules/core-js/library/modules/$.export.js:30:36)
    at AsyncIterator.enqueue (/Users/kazuaki/GitHub/appium/node_modules/babel-runtime/regenerator/runtime.js:184:12)
    at AsyncIterator.prototype.(anonymous function) [as next] (/Users/kazuaki/GitHub/appium/node_modules/babel-runtime/regenerator/runtime.js:100:21)
    at Object.runtime.async (/Users/kazuaki/GitHub/appium/node_modules/babel-runtime/regenerator/runtime.js:209:12)
    at IosDriver.callee$0$0 [as createSession] (/Users/kazuaki/GitHub/appium/node_modules/appium-base-driver/build/lib/basedriver/commands/session.js:35:30)
    at IosDriver.createSession$ (/Users/kazuaki/GitHub/appium/node_modules/appium-ios-driver/lib/driver.js:51:16)
    at tryCatch (/Users/kazuaki/GitHub/appium/node_modules/babel-runtime/regenerator/runtime.js:67:40)
    at GeneratorFunctionPrototype.invoke [as _invoke] (/Users/kazuaki/GitHub/appium/node_modules/babel-runtime/regenerator/runtime.js:315:22)
    at GeneratorFunctionPrototype.prototype.(anonymous function) [as next] (/Users/kazuaki/GitHub/appium/node_modules/babel-runtime/regenerator/runtime.js:100:21)
    at invoke (/Users/kazuaki/GitHub/appium/node_modules/babel-runtime/regenerator/runtime.js:136:37)
    at enqueueResult (/Users/kazuaki/GitHub/appium/node_modules/babel-runtime/regenerator/runtime.js:185:17)
    at Promise (<anonymous>)
    at F (/Users/kazuaki/GitHub/appium/node_modules/core-js/library/modules/$.export.js:30:36)
    at AsyncIterator.enqueue (/Users/kazuaki/GitHub/appium/node_modules/babel-runtime/regenerator/runtime.js:184:12)
    at AsyncIterator.prototype.(anonymous function) [as next] (/Users/kazuaki/GitHub/appium/node_modules/babel-runtime/regenerator/runtime.js:100:21)
    at Object.runtime.async (/Users/kazuaki/GitHub/appium/node_modules/babel-runtime/regenerator/runtime.js:209:12)
    at IosDriver.createSession (/Users/kazuaki/GitHub/appium/node_modules/appium-ios-driver/build/lib/driver.js:196:34)
    at AppiumDriver.createSession$ (/Users/kazuaki/GitHub/appium/lib/appium.js:211:41)
    at tryCatch (/Users/kazuaki/GitHub/appium/node_modules/babel-runtime/regenerator/runtime.js:67:40)
    at GeneratorFunctionPrototype.invoke [as _invoke] (/Users/kazuaki/GitHub/appium/node_modules/babel-runtime/regenerator/runtime.js:315:22)
    at GeneratorFunctionPrototype.prototype.(anonymous function) [as next] (/Users/kazuaki/GitHub/appium/node_modules/babel-runtime/regenerator/runtime.js:100:21)
    at GeneratorFunctionPrototype.invoke (/Users/kazuaki/GitHub/appium/node_modules/babel-runtime/regenerator/runtime.js:136:37)
    at <anonymous>
    at process._tickCallback (internal/process/next_tick.js:169:7)
 { SessionNotCreatedError: A new session could not be created. Details: The desiredCapabilities object was not valid for the following reason(s):  deviceName can't be blank,
    at IosDriver.validateDesiredCaps (/Users/kazuaki/GitHub/appium/node_modules/appium-base-driver/lib/basedriver/driver.js:184:25)
    at IosDriver.validateDesiredCaps (/Users/kazuaki/GitHub/appium/node_modules/appium-ios-driver/lib/driver.js:51:16)
    at IosDriver.callee$0$0$ (/Users/kazuaki/GitHub/appium/node_modules/appium-base-driver/lib/basedriver/commands/session.js:23:8)
    at tryCatch (/Users/kazuaki/GitHub/appium/node_modules/babel-runtime/regenerator/runtime.js:67:40)
    at GeneratorFunctionPrototype.invoke [as _invoke] (/Users/kazuaki/GitHub/appium/node_modules/babel-runtime/regenerator/runtime.js:315:22)
    at GeneratorFunctionPrototype.prototype.(anonymous function) [as next] (/Users/kazuaki/GitHub/appium/node_modules/babel-runtime/regenerator/runtime.js:100:21)
    at invoke (/Users/kazuaki/GitHub/appium/node_modules/babel-runtime/regenerator/runtime.js:136:37)
    at enqueueResult (/Users/kazuaki/GitHub/appium/node_modules/babel-runtime/regenerator/runtime.js:185:17)
    at Promise (<anonymous>)
    at F (/Users/kazuaki/GitHub/appium/node_modules/core-js/library/modules/$.export.js:30:36)
    at AsyncIterator.enqueue (/Users/kazuaki/GitHub/appium/node_modules/babel-runtime/regenerator/runtime.js:184:12)
    at AsyncIterator.prototype.(anonymous function) [as next] (/Users/kazuaki/GitHub/appium/node_modules/babel-runtime/regenerator/runtime.js:100:21)
    at Object.runtime.async (/Users/kazuaki/GitHub/appium/node_modules/babel-runtime/regenerator/runtime.js:209:12)
    at IosDriver.callee$0$0 [as createSession] (/Users/kazuaki/GitHub/appium/node_modules/appium-base-driver/build/lib/basedriver/commands/session.js:35:30)
    at IosDriver.createSession$ (/Users/kazuaki/GitHub/appium/node_modules/appium-ios-driver/lib/driver.js:51:16)
    at tryCatch (/Users/kazuaki/GitHub/appium/node_modules/babel-runtime/regenerator/runtime.js:67:40)
    at GeneratorFunctionPrototype.invoke [as _invoke] (/Users/kazuaki/GitHub/appium/node_modules/babel-runtime/regenerator/runtime.js:315:22)
    at GeneratorFunctionPrototype.prototype.(anonymous function) [as next] (/Users/kazuaki/GitHub/appium/node_modules/babel-runtime/regenerator/runtime.js:100:21)
    at invoke (/Users/kazuaki/GitHub/appium/node_modules/babel-runtime/regenerator/runtime.js:136:37)
    at enqueueResult (/Users/kazuaki/GitHub/appium/node_modules/babel-runtime/regenerator/runtime.js:185:17)
    at Promise (<anonymous>)
    at F (/Users/kazuaki/GitHub/appium/node_modules/core-js/library/modules/$.export.js:30:36)
    at AsyncIterator.enqueue (/Users/kazuaki/GitHub/appium/node_modules/babel-runtime/regenerator/runtime.js:184:12)
    at AsyncIterator.prototype.(anonymous function) [as next] (/Users/kazuaki/GitHub/appium/node_modules/babel-runtime/regenerator/runtime.js:100:21)
    at Object.runtime.async (/Users/kazuaki/GitHub/appium/node_modules/babel-runtime/regenerator/runtime.js:209:12)
    at IosDriver.createSession (/Users/kazuaki/GitHub/appium/node_modules/appium-ios-driver/build/lib/driver.js:196:34)
    at AppiumDriver.createSession$ (/Users/kazuaki/GitHub/appium/lib/appium.js:211:41)
    at tryCatch (/Users/kazuaki/GitHub/appium/node_modules/babel-runtime/regenerator/runtime.js:67:40)
    at GeneratorFunctionPrototype.invoke [as _invoke] (/Users/kazuaki/GitHub/appium/node_modules/babel-runtime/regenerator/runtime.js:315:22)
    at GeneratorFunctionPrototype.prototype.(anonymous function) [as next] (/Users/kazuaki/GitHub/appium/node_modules/babel-runtime/regenerator/runtime.js:100:21)
    at GeneratorFunctionPrototype.invoke (/Users/kazuaki/GitHub/appium/node_modules/babel-runtime/regenerator/runtime.js:136:37)
    at <anonymous>
    at process._tickCallback (internal/process/next_tick.js:169:7) jsonwpCode: 33, w3cStatus: 500 }
[HTTP] <-- POST /wd/hub/session 500 59 ms - 199

@KazuCocoa KazuCocoa merged commit f7eefc3 into appium:master Dec 16, 2017
@KazuCocoa KazuCocoa deleted the fix_createsession branch December 16, 2017 03:10

# Use capabilities directory because Appium's capability is based on W3C one.
# Called in bridge.create_session(desired_capabilities)
def merged_capabilities(desired_capabilities)
Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

selenium-webdriver

        def merged_capabilities(oss_capabilities)
          w3c_capabilities = W3C::Capabilities.from_oss(oss_capabilities)

          {
            desiredCapabilities: oss_capabilities,
            capabilities: {
              firstMatch: [w3c_capabilities]
            }
          }
        end

@KazuCocoa
Copy link
Copy Markdown
Member Author

KazuCocoa commented Dec 19, 2017

The reason why Ruby client filter the capabilities are valid only for the following capabilities for W3C specs:

          KNOWN = [
            :browser_name,
            :browser_version,
            :platform_name,
            :accept_insecure_certs,
            :page_load_strategy,
            :proxy,
            :set_window_rect,
            :timeouts,
            :unhandled_prompt_behavior,

            # remote-specific
            :remote_session_id,

            # TODO (alex): deprecate in favor of Firefox::Options?
            :accessibility_checks,
            :device,

            # TODO (alex): deprecate compatibility with OSS-capabilities
            :implicit_timeout,
            :page_load_timeout,
            :script_timeout,
          ].freeze

@KazuCocoa
Copy link
Copy Markdown
Member Author

@KazuCocoa KazuCocoa mentioned this pull request Dec 19, 2017
4 tasks
@dpgraham
Copy link
Copy Markdown

I'm going to make a PR for Appium today as well that merges desiredCapabilities into the alwaysMatch W3C object.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants