Skip to content

Commit 07988bb

Browse files
authored
Merge pull request #29129 from owncloud/stable10-ui-tests-stabilize
stabilize UI tests
2 parents 7d74b5f + 2c0b66e commit 07988bb

15 files changed

Lines changed: 236 additions & 17 deletions

.travis.yml

Lines changed: 78 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,12 +67,30 @@ matrix:
6767
apt: *common_apt
6868
hosts: *common_hosts
6969
sauce_connect: true
70+
- php: 5.6
71+
env: DB=pgsql TC=selenium BROWSER="chrome" BROWSER_VERSION="latest" BEHAT_SUITE="moveFilesFolders" PLATFORM="Windows 10" TEST_DAV=0
72+
addons:
73+
apt: *common_apt
74+
hosts: *common_hosts
75+
sauce_connect: true
76+
- php: 5.6
77+
env: DB=pgsql TC=selenium BROWSER="chrome" BROWSER_VERSION="latest" BEHAT_SUITE="renameFilesFolders" PLATFORM="Windows 10" TEST_DAV=0
78+
addons:
79+
apt: *common_apt
80+
hosts: *common_hosts
81+
sauce_connect: true
7082
- php: 5.6
7183
env: DB=pgsql TC=selenium BROWSER="chrome" BROWSER_VERSION="latest" BEHAT_SUITE="trashbin" PLATFORM="Windows 10" TEST_DAV=0
7284
addons:
7385
apt: *common_apt
7486
hosts: *common_hosts
7587
sauce_connect: true
88+
- php: 5.6
89+
env: DB=pgsql TC=selenium BROWSER="chrome" BROWSER_VERSION="latest" BEHAT_SUITE="sharing" PLATFORM="Windows 10" TEST_DAV=0
90+
addons:
91+
apt: *common_apt
92+
hosts: *common_hosts
93+
sauce_connect: true
7694
- php: 5.6
7795
env: DB=pgsql TC=selenium BROWSER="firefox" BROWSER_VERSION="47.0" BEHAT_SUITE="other" PLATFORM="Windows 10" TEST_DAV=0
7896
addons:
@@ -85,12 +103,30 @@ matrix:
85103
apt: *common_apt
86104
hosts: *common_hosts
87105
sauce_connect: true
106+
- php: 5.6
107+
env: DB=pgsql TC=selenium BROWSER="firefox" BROWSER_VERSION="47.0" BEHAT_SUITE="moveFilesFolders" PLATFORM="Windows 10" TEST_DAV=0
108+
addons:
109+
apt: *common_apt
110+
hosts: *common_hosts
111+
sauce_connect: true
112+
- php: 5.6
113+
env: DB=pgsql TC=selenium BROWSER="firefox" BROWSER_VERSION="47.0" BEHAT_SUITE="renameFilesFolders" PLATFORM="Windows 10" TEST_DAV=0
114+
addons:
115+
apt: *common_apt
116+
hosts: *common_hosts
117+
sauce_connect: true
88118
- php: 5.6
89119
env: DB=pgsql TC=selenium BROWSER="firefox" BROWSER_VERSION="47.0" BEHAT_SUITE="trashbin" PLATFORM="Windows 10" TEST_DAV=0
90120
addons:
91121
apt: *common_apt
92122
hosts: *common_hosts
93123
sauce_connect: true
124+
- php: 5.6
125+
env: DB=pgsql TC=selenium BROWSER="firefox" BROWSER_VERSION="47.0" BEHAT_SUITE="sharing" PLATFORM="Windows 10" TEST_DAV=0
126+
addons:
127+
apt: *common_apt
128+
hosts: *common_hosts
129+
sauce_connect: true
94130
- php: 5.6
95131
env: DB=pgsql TC=litmus-v1
96132
- php: 5.6
@@ -119,20 +155,55 @@ matrix:
119155
apt: *common_apt
120156
hosts: *common_hosts
121157
sauce_connect: true
158+
- if: type = cron
159+
php: 5.6
160+
env: DB=pgsql TC=selenium BROWSER="chrome" BROWSER_VERSION="latest-1" BEHAT_SUITE="moveFilesFolders" PLATFORM="Windows 10" TEST_DAV=0
161+
addons:
162+
apt: *common_apt
163+
hosts: *common_hosts
164+
sauce_connect: true
165+
- if: type = cron
166+
php: 5.6
167+
env: DB=pgsql TC=selenium BROWSER="chrome" BROWSER_VERSION="latest-1" BEHAT_SUITE="renameFilesFolders" PLATFORM="Windows 10" TEST_DAV=0
168+
addons:
169+
apt: *common_apt
170+
hosts: *common_hosts
171+
sauce_connect: true
122172
- if: type = cron
123173
php: 5.6
124174
env: DB=pgsql TC=selenium BROWSER="chrome" BROWSER_VERSION="latest-1" BEHAT_SUITE="trashbin" PLATFORM="Windows 10" TEST_DAV=0
125175
addons:
126176
apt: *common_apt
127177
hosts: *common_hosts
128178
sauce_connect: true
179+
- if: type = cron
180+
php: 5.6
181+
env: DB=pgsql TC=selenium BROWSER="chrome" BROWSER_VERSION="latest-1" BEHAT_SUITE="sharing" PLATFORM="Windows 10" TEST_DAV=0
182+
addons:
183+
apt: *common_apt
184+
hosts: *common_hosts
185+
sauce_connect: true
129186
- if: type = cron
130187
php: 5.6
131188
env: DB=pgsql TC=selenium BROWSER="internet explorer" BROWSER_VERSION="11.0" BEHAT_SUITE="other" PLATFORM="Windows 7" TEST_DAV=0
132189
addons:
133190
apt: *common_apt
134191
hosts: *common_hosts
135192
sauce_connect: true
193+
- if: type = cron
194+
php: 5.6
195+
env: DB=pgsql TC=selenium BROWSER="internet explorer" BROWSER_VERSION="11.0" BEHAT_SUITE="moveFilesFolders" PLATFORM="Windows 7" TEST_DAV=0
196+
addons:
197+
apt: *common_apt
198+
hosts: *common_hosts
199+
sauce_connect: true
200+
- if: type = cron
201+
php: 5.6
202+
env: DB=pgsql TC=selenium BROWSER="internet explorer" BROWSER_VERSION="11.0" BEHAT_SUITE="renameFilesFolders" PLATFORM="Windows 7" TEST_DAV=0
203+
addons:
204+
apt: *common_apt
205+
hosts: *common_hosts
206+
sauce_connect: true
136207
- if: type = cron
137208
php: 5.6
138209
env: DB=pgsql TC=selenium BROWSER="internet explorer" BROWSER_VERSION="11.0" BEHAT_SUITE="files" PLATFORM="Windows 7" TEST_DAV=0
@@ -147,5 +218,11 @@ matrix:
147218
apt: *common_apt
148219
hosts: *common_hosts
149220
sauce_connect: true
150-
221+
- if: type = cron
222+
php: 5.6
223+
env: DB=pgsql TC=selenium BROWSER="internet explorer" BROWSER_VERSION="11.0" BEHAT_SUITE="sharing" PLATFORM="Windows 7" TEST_DAV=0
224+
addons:
225+
apt: *common_apt
226+
hosts: *common_hosts
227+
sauce_connect: true
151228
fast_finish: true

tests/travis/start_ui_tests.sh

Lines changed: 30 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,11 @@ RED='\033[0;31m'
99
BLUE='\033[0;34m'
1010
NC='\033[0m' # No Color
1111

12+
#save the current language and set the language to "C"
13+
#we want to have it all in english to be able to parse outputs
14+
OLD_LANG=$LANG
15+
export LANG=C
16+
1217
# Look for command line options for:
1318
# -c or --config - specify a behat.yml to use
1419
# --feature - specify a single feature to run
@@ -143,22 +148,30 @@ then
143148
EXTRA_CAPABILITIES='"seleniumVersion":"2.53.1","screenResolution":"1920x1080",'
144149
fi
145150

151+
152+
if [ "$BROWSER" == "internet explorer" ]
153+
then
154+
EXTRA_CAPABILITIES='"iedriverVersion": "3.4.0","requiresWindowFocus":true,"screenResolution":"1920x1080",'
155+
fi
156+
146157
EXTRA_CAPABILITIES=$EXTRA_CAPABILITIES'"maxDuration":"3600"'
147158

148159
#Set up personalized skeleton
149160
OCC=./occ
150161
PREVIOUS_SKELETON_DIR=$($OCC --no-warnings config:system:get skeletondirectory)
151162
$OCC config:system:set skeletondirectory --value="$(pwd)/tests/ui/skeleton" >/dev/null
152163

153-
echo "Running tests on '$BROWSER' ($BROWSER_VERSION) on $PLATFORM"
164+
TEST_LOG_FILE=$(mktemp)
165+
166+
echo "Running tests on '$BROWSER' ($BROWSER_VERSION) on $PLATFORM" | tee $TEST_LOG_FILE
154167
export BEHAT_PARAMS='{"extensions" : {"Behat\\MinkExtension" : {"browser_name": "'$BROWSER'", "base_url" : "'$BASE_URL'", "selenium2":{"capabilities": {"browser": "'$BROWSER'", "version": "'$BROWSER_VERSION'", "platform": "'$PLATFORM'", "name": "'$TRAVIS_REPO_SLUG' - '$TRAVIS_JOB_NUMBER'", "extra_capabilities": {'$EXTRA_CAPABILITIES'}}, "wd_host":"http://'$SAUCE_USERNAME:$SAUCE_ACCESS_KEY'@localhost:4445/wd/hub"}}}}'
155168
export IPV4_URL
156169
export IPV6_URL
157170
export REMOTE_FED_BASE_URL
158171

159-
lib/composer/bin/behat -c $BEHAT_YML $BEHAT_SUITE_OPTION $BEHAT_TAG_OPTION $BEHAT_TAGS $BEHAT_FEATURE -v
172+
lib/composer/bin/behat -c $BEHAT_YML $BEHAT_SUITE_OPTION $BEHAT_TAG_OPTION $BEHAT_TAGS $BEHAT_FEATURE -v 2>&1 | tee -a $TEST_LOG_FILE
160173

161-
if [ $? -eq 0 ]
174+
if [ ${PIPESTATUS[0]} -eq 0 ]
162175
then
163176
PASSED=true
164177
else
@@ -179,7 +192,7 @@ then
179192
else
180193
echo ""
181194
echo "The following tests were skipped because they are tagged @skip:"
182-
cat "$DRY_RUN_FILE"
195+
cat "$DRY_RUN_FILE" | tee -a $TEST_LOG_FILE
183196
fi
184197
rm -f "$DRY_RUN_FILE"
185198
fi
@@ -194,11 +207,22 @@ fi
194207
if [ ! -z "$SAUCE_USERNAME" ] && [ ! -z "$SAUCE_ACCESS_KEY" ] && [ -e /tmp/saucelabs_sessionid ]
195208
then
196209
SAUCELABS_SESSIONID=`cat /tmp/saucelabs_sessionid`
197-
curl -X PUT -s -d "{\"passed\": $PASSED}" -u $SAUCE_USERNAME:$SAUCE_ACCESS_KEY https://saucelabs.com/rest/v1/$SAUCE_USERNAME/jobs/$SAUCELABS_SESSIONID
210+
curl -X PUT -s -d "{\"passed\": $PASSED}" -u $SAUCE_USERNAME:$SAUCE_ACCESS_KEY https://saucelabs.com/rest/v1/$SAUCE_USERNAME/jobs/$SAUCELABS_SESSIONID 2>&1 | tee -a $TEST_LOG_FILE
211+
212+
printf "\n${RED}SAUCELABS RESULTS:${BLUE} https://saucelabs.com/jobs/$SAUCELABS_SESSIONID\n${NC}" | tee -a $TEST_LOG_FILE
213+
fi
198214

199-
printf "\n${RED}SAUCELABS RESULTS:${BLUE} https://saucelabs.com/jobs/$SAUCELABS_SESSIONID\n${NC}"
215+
#upload log file for later analysis
216+
if [ "$PASSED" = false ] && [ ! -z "$REPORTING_WEBDAV_USER" ] && [ ! -z "$REPORTING_WEBDAV_PWD" ] && [ ! -z "$REPORTING_WEBDAV_URL" ]
217+
then
218+
curl -u $REPORTING_WEBDAV_USER:$REPORTING_WEBDAV_PWD -T $TEST_LOG_FILE $REPORTING_WEBDAV_URL/"$TRAVIS_JOB_NUMBER"_`date "+%F_%T"`.log
200219
fi
201220

221+
#reset the original language
222+
export LANG=$OLD_LANG
223+
224+
rm -f "$TEST_LOG_FILE"
225+
202226
if [ "$PASSED" = true ]
203227
then
204228
exit 0

tests/ui/config/behat.yml

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,26 @@ default:
2323
- UsersContext:
2424
- FilesContext:
2525

26+
moveFilesFolders:
27+
paths:
28+
- %paths.base%/../features/moveFilesFolders
29+
context: *common_suite_context
30+
contexts:
31+
- FeatureContext:
32+
- LoginContext:
33+
- UsersContext:
34+
- FilesContext:
35+
36+
renameFilesFolders:
37+
paths:
38+
- %paths.base%/../features/renameFilesFolders
39+
context: *common_suite_context
40+
contexts:
41+
- FeatureContext:
42+
- LoginContext:
43+
- UsersContext:
44+
- FilesContext:
45+
2646
trashbin:
2747
paths:
2848
- %paths.base%/../features/trashbin
@@ -33,6 +53,17 @@ default:
3353
- UsersContext:
3454
- FilesContext:
3555

56+
sharing:
57+
paths:
58+
- %paths.base%/../features/sharing
59+
context: *common_suite_context
60+
contexts:
61+
- FeatureContext:
62+
- LoginContext:
63+
- UsersContext:
64+
- FilesContext:
65+
- SharingContext:
66+
3667
other:
3768
paths:
3869
- %paths.base%/../features/other
@@ -44,4 +75,3 @@ default:
4475
- FilesContext:
4576
- PersonalSecuritySettingsContext:
4677
- PersonalGeneralSettingsContext:
47-
- SharingContext:

tests/ui/features/bootstrap/BasicStructure.php

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -236,7 +236,6 @@ public function theUserIsInTheGroup($user, $group) {
236236
public function setUpScenarioGetRegularUsersAndGroups(
237237
BeforeScenarioScope $scope
238238
) {
239-
SetupHelper::setOcPath($scope);
240239
$suiteParameters = SetupHelper::getSuiteParameters($scope);
241240
$this->adminPassword = (string)$suiteParameters['adminPassword'];
242241
$this->regularUserNames = explode(

tests/ui/features/bootstrap/FeatureContext.php

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,13 @@
2121
*/
2222

2323
use Behat\Behat\Context\Context;
24+
use Behat\Behat\Hook\Scope\AfterScenarioScope;
2425
use Behat\Behat\Hook\Scope\BeforeScenarioScope;
2526
use Behat\MinkExtension\Context\RawMinkContext;
2627
use Behat\Gherkin\Node\TableNode;
2728
use Page\OwncloudPage;
2829
use Page\LoginPage;
30+
use TestHelpers\SetupHelper;
2931

3032
require_once 'bootstrap.php';
3133

@@ -38,6 +40,7 @@ class FeatureContext extends RawMinkContext implements Context {
3840

3941
private $owncloudPage;
4042
private $loginPage;
43+
private $oldCSRFSetting = null;
4144

4245
/**
4346
* FeatureContext constructor.
@@ -139,8 +142,25 @@ public function iShouldBeRedirectedToAPageWithTheTitle($title) {
139142
* @return void
140143
*/
141144
public function setUpSuite(BeforeScenarioScope $scope) {
145+
SetupHelper::setOcPath($scope);
142146
$jobId = $this->getSessionId($scope);
143147
file_put_contents("/tmp/saucelabs_sessionid", $jobId);
148+
if ($this->oldCSRFSetting === null) {
149+
$oldCSRFSetting = SetupHelper::runOcc(
150+
['config:system:get', 'csrf.disabled']
151+
)['stdOut'];
152+
$this->oldCSRFSetting = trim($oldCSRFSetting);
153+
}
154+
SetupHelper::runOcc(
155+
[
156+
'config:system:set',
157+
'csrf.disabled',
158+
'--type',
159+
'boolean',
160+
'--value',
161+
'true'
162+
]
163+
);
144164
}
145165

146166
/**
@@ -153,4 +173,29 @@ public function getSessionId(BeforeScenarioScope $scope) {
153173
$sessionId = array_pop($parts);
154174
return $sessionId;
155175
}
176+
177+
/**
178+
* After Scenario. Sets back old settings
179+
*
180+
* @param AfterScenarioScope $scope
181+
* @AfterScenario
182+
* @return void
183+
*/
184+
public function tearDownSuite(AfterScenarioScope $scope) {
185+
if ($this->oldCSRFSetting === "") {
186+
SetupHelper::runOcc(['config:system:delete', 'csrf.disabled']);
187+
} elseif ($this->oldCSRFSetting !== null) {
188+
SetupHelper::runOcc(
189+
[
190+
'config:system:set',
191+
'csrf.disabled',
192+
'--type',
193+
'boolean',
194+
'--value',
195+
$this->oldCSRFSetting
196+
]
197+
);
198+
}
199+
200+
}
156201
}

tests/ui/features/bootstrap/FilesContext.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -368,6 +368,7 @@ public function theFileFolderShouldBeListed(
368368
if (is_null($pageObject)) {
369369
$pageObject = $this->filesPage;
370370
}
371+
$pageObject->waitTillPageIsLoaded($this->getSession());
371372
PHPUnit_Framework_Assert::assertNotNull(
372373
$pageObject->findFileRowByName($name, $this->getSession())
373374
);

0 commit comments

Comments
 (0)