browse_files.feature 10.8 KB
Newer Older
Ciro Santilli's avatar
Ciro Santilli committed
1
Feature: Project Source Browse Files
2 3
  Background:
    Given I sign in as a user
Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
4 5 6 7 8 9 10
    And I own project "Shop"
    Given I visit project source page

  Scenario: I browse files from master branch
    Then I should see files from repository

  Scenario: I browse files for specific ref
11 12
    Given I visit project source page for "6d39438"
    Then I should see files from repository for "6d39438"
Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
13 14

  Scenario: I browse file content
15
    Given I click on ".gitignore" file in repo
Ciro Santilli's avatar
Ciro Santilli committed
16
    Then I should see its content
Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
17 18

  Scenario: I browse raw file
19
    Given I visit blob file from repo
20
    And I click link "Raw"
Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
21
    Then I should see raw file content
Valeriy Sizov's avatar
Valeriy Sizov committed
22

23
  Scenario: I can create file
Stan Hu's avatar
Stan Hu committed
24
    Given I click on "New file" link in repo
25 26
    Then I can see new file page

27 28 29 30 31 32
  Scenario: I can create file when I don't have write access
    Given I don't have write access
    And I click on "New file" link in repo
    Then I should see a notice about a new fork having been created
    Then I can see new file page

33
  @javascript
Ciro Santilli's avatar
Ciro Santilli committed
34
  Scenario: I can create and commit file
Stan Hu's avatar
Stan Hu committed
35
    Given I click on "New file" link in repo
Ciro Santilli's avatar
Ciro Santilli committed
36 37
    And I edit code
    And I fill the new file name
38 39 40 41
    And I fill the commit message
    And I click on "Commit Changes"
    Then I am redirected to the new file
    And I should see its new content
42

43 44 45 46 47 48 49 50 51 52 53
  @javascript
  Scenario: I can create and commit file when I don't have write access
    Given I don't have write access
    And I click on "New file" link in repo
    And I edit code
    And I fill the new file name
    And I fill the commit message
    And I click on "Commit Changes"
    Then I am redirected to the fork's new merge request page
    And I can see the new commit message

54 55 56 57 58 59 60 61 62 63 64
  @javascript
  Scenario: I can create and commit file with new lines at the end of file
    Given I click on "New file" link in repo
    And I edit code with new lines at end of file
    And I fill the new file name
    And I fill the commit message
    And I click on "Commit Changes"
    Then I am redirected to the new file
    And I click button "Edit"
    And I should see its content with new lines preserved at end of file

65 66 67 68 69 70 71 72
  @javascript
  Scenario: I can create and commit file and specify new branch
    Given I click on "New file" link in repo
    And I edit code
    And I fill the new file name
    And I fill the commit message
    And I fill the new branch name
    And I click on "Commit Changes"
Douwe Maan's avatar
Douwe Maan committed
73
    Then I am redirected to the new merge request page
74 75
    And I should see its new content

76 77
  @javascript
  Scenario: I can upload file and commit
Stan Hu's avatar
Stan Hu committed
78
    Given I click on "Upload file" link in repo
79 80
    And I upload a new text file
    And I fill the upload file commit message
Stan Hu's avatar
Stan Hu committed
81
    And I fill the new branch name
82 83
    And I click on "Upload file"
    Then I can see the new text file
Douwe Maan's avatar
Douwe Maan committed
84
    And I am redirected to the new merge request page
85 86
    And I can see the new commit message

87 88 89 90 91 92 93 94 95 96 97 98 99
  @javascript
  Scenario: I can upload file and commit when I don't have write access
    Given I don't have write access
    And I click on "Upload file" link in repo
    Then I should see a notice about a new fork having been created
    When I click on "Upload file" link in repo
    And I upload a new text file
    And I fill the upload file commit message
    And I click on "Upload file"
    Then I can see the new text file
    And I am redirected to the fork's new merge request page
    And I can see the new commit message

100 101 102 103 104 105 106 107 108 109
  @javascript
  Scenario: I can replace file and commit
    Given I click on ".gitignore" file in repo
    And I see the ".gitignore"
    And I click on "Replace"
    And I replace it with a text file
    And I fill the replace file commit message
    And I click on "Replace file"
    Then I can see the new text file
    And I can see the replacement commit message
110

111
  @javascript
112 113 114 115 116 117 118 119 120 121 122
  Scenario: I can replace file and commit when I don't have write access
    Given I don't have write access
    And I click on ".gitignore" file in repo
    And I see the ".gitignore"
    And I click on "Replace"
    Then I should see a notice about a new fork having been created
    When I click on "Replace"
    And I replace it with a text file
    And I fill the replace file commit message
    And I click on "Replace file"
    Then I can see the new text file
Douwe Maan's avatar
Douwe Maan committed
123
    And I am redirected to the fork's new merge request page
124
    And I can see the replacement commit message
125

126
  @javascript
127 128 129 130 131 132 133
  Scenario: I can create file in empty repo
    Given I own an empty project
    And I visit my empty project page
    And I create bare repo
    When I click on "add a file" link
    And I edit code
    And I fill the new file name
Ciro Santilli's avatar
Ciro Santilli committed
134
    And I fill the commit message
135
    And I click on "Commit Changes"
Ciro Santilli's avatar
Ciro Santilli committed
136 137 138
    Then I am redirected to the new file
    And I should see its new content

139 140
  @javascript
  Scenario: If I enter an illegal file name I see an error message
Stan Hu's avatar
Stan Hu committed
141
    Given I click on "New file" link in repo
142 143 144 145 146 147 148
    And I fill the new file name with an illegal name
    And I edit code
    And I fill the commit message
    And I click on "Commit changes"
    Then I am on the new file page
    And I see a commit error message

149 150 151 152 153 154 155 156 157 158
  @javascript
  Scenario: I can create file with a directory name
    Given I click on "New file" link in repo
    And I fill the new file name with a new directory
    And I edit code
    And I fill the commit message
    And I click on "Commit changes"
    Then I am redirected to the new file with directory
    And I should see its new content

Valeriy Sizov's avatar
Valeriy Sizov committed
159 160
  @javascript
  Scenario: I can edit file
161
    Given I click on ".gitignore" file in repo
162
    And I click button "Edit"
163
    Then I can edit code
skv-headless's avatar
skv-headless committed
164

165 166 167 168 169 170 171 172
  @javascript
  Scenario: I can edit file when I don't have write access
    Given I don't have write access
    And I click on ".gitignore" file in repo
    And I click button "Edit"
    Then I should see a notice about a new fork having been created
    And I can edit code

173 174 175 176
  Scenario: If the file is binary the edit link is hidden
    Given I visit a binary file in the repo
    Then I cannot see the edit button

Ciro Santilli's avatar
Ciro Santilli committed
177 178 179
  @javascript
  Scenario: I can edit and commit file
    Given I click on ".gitignore" file in repo
180
    And I click button "Edit"
Ciro Santilli's avatar
Ciro Santilli committed
181 182
    And I edit code
    And I fill the commit message
183
    And I click on "Commit Changes"
Ciro Santilli's avatar
Ciro Santilli committed
184 185 186
    Then I am redirected to the ".gitignore"
    And I should see its new content

187 188 189 190 191 192 193 194 195 196 197
  @javascript
  Scenario: I can edit and commit file when I don't have write access
    Given I don't have write access
    And I click on ".gitignore" file in repo
    And I click button "Edit"
    And I edit code
    And I fill the commit message
    And I click on "Commit Changes"
    Then I am redirected to the fork's new merge request page
    And I can see the new commit message

198 199 200 201 202 203 204 205
  @javascript
  Scenario: I can edit and commit file to new branch
    Given I click on ".gitignore" file in repo
    And I click button "Edit"
    And I edit code
    And I fill the commit message
    And I fill the new branch name
    And I click on "Commit Changes"
Douwe Maan's avatar
Douwe Maan committed
206
    Then I am redirected to the new merge request page
207 208
    And I should see its new content

209 210 211 212 213 214 215 216 217 218
  @javascript  @wip
  Scenario: If I don't change the content of the file I see an error message
    Given I click on ".gitignore" file in repo
    And I click button "edit"
    And I fill the commit message
    And I click on "Commit changes"
    # Test fails because carriage returns are added to the file.
    Then I am on the ".gitignore" edit file page
    And I see a commit error message

Stan Hu's avatar
Stan Hu committed
219 220 221 222 223 224 225
  @javascript
  Scenario: I can create directory in repo
    When I click on "New directory" link in repo
    And I fill the new directory name
    And I fill the commit message
    And I fill the new branch name
    And I click on "Create directory"
Douwe Maan's avatar
Douwe Maan committed
226
    Then I am redirected to the new merge request page
Stan Hu's avatar
Stan Hu committed
227

228 229 230 231 232 233 234 235 236 237 238
  @javascript
  Scenario: I can create directory in repo when I don't have write access
    Given I don't have write access
    When I click on "New directory" link in repo
    Then I should see a notice about a new fork having been created
    When I click on "New directory" link in repo
    And I fill the new directory name
    And I fill the commit message
    And I click on "Create directory"
    Then I am redirected to the fork's new merge request page

Stan Hu's avatar
Stan Hu committed
239 240 241 242 243 244 245 246 247
  @javascript
  Scenario: I attempt to create an existing directory
    When I click on "New directory" link in repo
    And I fill an existing directory name
    And I fill the commit message
    And I click on "Create directory"
    Then I see "Unable to create directory"
    And I am redirected to the root directory

skv-headless's avatar
skv-headless committed
248 249
  @javascript
  Scenario: I can see editing preview
250
    Given I click on ".gitignore" file in repo
251
    And I click button "Edit"
skv-headless's avatar
skv-headless committed
252 253 254 255
    And I edit code
    And I click link "Diff"
    Then I see diff

Ciro Santilli's avatar
Ciro Santilli committed
256
  @javascript
Douwe Maan's avatar
Douwe Maan committed
257
  Scenario: I can delete file and commit
Ciro Santilli's avatar
Ciro Santilli committed
258 259
    Given I click on ".gitignore" file in repo
    And I see the ".gitignore"
Douwe Maan's avatar
Douwe Maan committed
260
    And I click on "Delete"
Ciro Santilli's avatar
Ciro Santilli committed
261
    And I fill the commit message
Douwe Maan's avatar
Douwe Maan committed
262
    And I click on "Delete file"
Ciro Santilli's avatar
Ciro Santilli committed
263 264 265
    Then I am redirected to the files URL
    And I don't see the ".gitignore"

266 267 268 269 270 271 272 273 274 275 276 277 278
  @javascript
  Scenario: I can delete file and commit when I don't have write access
    Given I don't have write access
    And I click on ".gitignore" file in repo
    And I see the ".gitignore"
    And I click on "Delete"
    Then I should see a notice about a new fork having been created
    When I click on "Delete"
    And I fill the commit message
    And I click on "Delete file"
    Then I am redirected to the fork's new merge request page
    And I can see the new commit message

279
  Scenario: I can browse directory with Browse Dir
280
    Given I click on files directory
281
    And I click on History link
282 283 284 285
    Then I see Browse dir link

  Scenario: I can browse file with Browse File
    Given I click on readme file
286
    And I click on History link
287 288 289
    Then I see Browse file link

  Scenario: I can browse code with Browse Code
290
    Given I click on History link
291
    Then I see Browse code link
292 293 294 295 296

  # Permalink

  Scenario: I click on the permalink link from a branch ref
    Given I click on ".gitignore" file in repo
297
    And I click on Permalink
298 299 300 301 302 303
    Then I am redirected to the permalink URL

  Scenario: I don't see the permalink link from a SHA ref
    Given I visit project source page for "6d394385cf567f80a8fd85055db1ab4c5295806f"
    And I click on ".gitignore" file in repo
    Then I don't see the permalink link
304 305 306 307 308 309 310

  @javascript
  Scenario: I browse code with single quotes in the ref
    Given I switch ref to 'test'
    And I see the ref 'test' has been selected
    And I visit the 'test' tree
    Then I see the commit data
311 312 313 314 315 316

  @javascript
  Scenario: I browse code with a leading dot in the directory
    Given I switch ref to fix
    And I visit the fix tree
    Then I see the commit data for a directory with a leading dot
317 318 319 320 321 322

  Scenario: I browse LFS object
    Given I click on "files/lfs/lfs_object.iso" file in repo
    Then I should see download link and object size
    And I should not see lfs pointer details
    And I should see buttons for allowed commands