AppiumFactory::buildDriver()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 8
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 8
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 4
nc 1
nop 1
1
<?php
2
3
4
namespace Behat\MinkExtension\ServiceContainer\Driver;
5
6
use Symfony\Component\Config\Definition\Builder\ArrayNodeDefinition;
7
8
class AppiumFactory extends Selenium2Factory
9
{
10
    /**
11
     * {@inheritdoc}
12
     */
13
    public function getDriverName()
14
    {
15
        return 'appium';
16
    }
17
18
    /**
19
     * {@inheritdoc}
20
     */
21
    public function configure(ArrayNodeDefinition $builder)
22
    {
23
        $builder
24
            ->children()
25
                  ->scalarNode('browser')->defaultValue('remote')->end()
26
                  ->append($this->getCapabilitiesNode())
27
                  ->scalarNode('appium_host')->defaultValue('0.0.0.0')->end()
28
                  ->scalarNode('appium_port')->defaultValue('4723')->end()
29
            ->end()
30
        ;
31
    }
32
33
    /**
34
     * {@inheritdoc}
35
     */
36
    public function buildDriver(array $config)
37
    {
38
        $host = $config['appium_host'].":".$config['appium_port'];
39
40
        $config['wd_host'] = sprintf('%s/wd/hub', $host);
41
42
        return parent::buildDriver($config);
43
    }
44
45
    protected function getCapabilitiesNode()
46
    {
47
        $node = parent::getCapabilitiesNode();
48
49
        $node
50
            ->children()
51
                ->scalarNode('automationName')->defaultValue('Appium')->end()
52
                ->scalarNode('platformName')->end()
53
                ->scalarNode('platformVersion')->end()
54
                ->scalarNode('deviceName')->end()
55
                ->scalarNode('app')->end()
56
                ->scalarNode('browserName')->end()
57
                ->scalarNode('newCommandTimeout')->end()
58
                ->booleanNode('autoLaunch')->end()
59
                ->scalarNode('language')->end()
60
                ->scalarNode('locale')->end()
61
                ->scalarNode('udid')->end()
62
                ->scalarNode('orientation')->end()
63
                ->booleanNode('autoWebview')->end()
64
                ->booleanNode('noReset')->end()
65
                ->booleanNode('fullReset')->end()
66
            //ANDROID ONLY
67
                ->scalarNode('appActivity')->end()
68
                ->scalarNode('appPackage')->end()
69
                ->scalarNode('appWaitActivity')->end()
70
                ->scalarNode('appWaitPackage')->end()
71
                ->scalarNode('deviceReadyTimeout')->end()
72
                ->scalarNode('androidCoverage')->end()
73
                ->scalarNode('androidDeviceReadyTimeout')->end()
74
                ->scalarNode('androidDeviceSocket')->end()
75
                ->scalarNode('avd')->end()
76
                ->scalarNode('avdLaunchTimeout')->end()
77
                ->scalarNode('avdReadyTimeout')->end()
78
                ->scalarNode('avdArgs')->end()
79
                ->scalarNode('keystorePassword')->end()
80
                ->scalarNode('keystorePath')->end()
81
                ->scalarNode('keyAlias')->end()
82
                ->scalarNode('keyPassword')->end()
83
                ->scalarNode('chromedriverExecutable')->end()
84
                ->scalarNode('autoWebviewTimeout')->end()
85
                ->scalarNode('intentAction')->end()
86
                ->scalarNode('intentCategory')->end()
87
                ->scalarNode('intentFlags')->end()
88
                ->scalarNode('optionalIntentArguments')->end()
89
                ->booleanNode('enablePerformanceLogging')->end()
90
                ->booleanNode('useKeystore')->end()
91
                ->booleanNode('stopAppOnReset')->end()
92
                ->booleanNode('unicodeKeyboard')->end()
93
                ->booleanNode('resetKeyboard')->end()
94
                ->booleanNode('noSign')->end()
95
                ->booleanNode('ignoreUnimportantViews')->end()
96
           // IOS ONLY
97
                ->scalarNode('calendarFormat')->end()
98
                ->scalarNode('bundleId')->end()
99
                ->scalarNode('udid')->end()
100
                ->scalarNode('launchTimeout')->end()
101
                ->scalarNode('localizableStringsDir')->end()
102
                ->scalarNode('processArguments')->end()
103
                ->scalarNode('interKeyDelay')->end()
104
                ->scalarNode('sendKeyStrategy')->end()
105
                ->scalarNode('screenshotWaitTimeout')->end()
106
                ->scalarNode('waitForAppScript')->end()
107
                ->booleanNode('locationServicesEnabled')->end()
108
                ->booleanNode('locationServicesAuthorized')->end()
109
                ->booleanNode('autoAcceptAlerts')->end()
110
                ->booleanNode('autoDismissAlerts')->end()
111
                ->booleanNode('nativeInstrumentsLib')->end()
112
                ->booleanNode('nativeWebTap')->end()
113
                ->booleanNode('safariAllowPopups')->end()
114
                ->booleanNode('safariIgnoreFraudWarning')->end()
115
                ->booleanNode('safariOpenLinksInBackground')->end()
116
                ->booleanNode('keepKeyChains')->end()
117
                ->booleanNode('showIOSLog')->end()
118
            ->end()
119
         ;
120
121
        return $node;
122
    }
123
}
124