blob: 0f0c015e0c6c81787d1a4e3bec497b439c35bd4a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
|
# vim: ft=cucumber fileencoding=utf-8 sts=4 sw=4 et:
Feature: Saving and loading sessions
Background:
Given I clean up open tabs
Scenario: Saving a simple session
When I open data/hello.txt
And I open data/title.html in a new tab
Then the session should look like:
windows:
- active: true
tabs:
- history:
- url: about:blank
- active: true
url: http://localhost:*/data/hello.txt
- active: true
history:
- active: true
url: http://localhost:*/data/title.html
title: Test title
@qtwebengine_skip
Scenario: Zooming (qtwebkit)
When I open data/hello.txt
And I run :zoom 50
Then the session should look like:
windows:
- tabs:
- history:
- url: about:blank
zoom: 1.0
- url: http://localhost:*/data/hello.txt
zoom: 0.5
# The zoom level is only stored for the newest element for QtWebEngine.
@qtwebkit_skip
Scenario: Zooming (qtwebengine)
When I open data/hello.txt
And I run :zoom 50
Then the session should look like:
windows:
- tabs:
- history:
- url: about:blank
- url: http://localhost:*/data/hello.txt
zoom: 0.5
@qtwebengine_skip
Scenario: Scrolling (qtwebkit)
When I open data/scroll/simple.html
And I run :scroll-px 10 20
Then the session should look like:
windows:
- tabs:
- history:
- url: about:blank
scroll-pos:
x: 0
y: 0
- url: http://localhost:*/data/scroll/simple.html
scroll-pos:
x: 10
y: 20
# The scroll position is only stored for the newest element for QtWebEngine.
@qtwebkit_skip
Scenario: Scrolling (qtwebengine)
When I open data/scroll/simple.html
And I run :scroll-px 10 20
And I wait until the scroll position changed to 10/20
Then the session should look like:
windows:
- tabs:
- history:
- url: about:blank
- url: http://localhost:*/data/scroll/simple.html
scroll-pos:
x: 10
y: 20
Scenario: Redirect
When I open redirect-to?url=data/title.html without waiting
And I wait until data/title.html is loaded
Then the session should look like:
windows:
- tabs:
- history:
- url: about:blank
- active: true
url: http://localhost:*/data/title.html
original-url: http://localhost:*/redirect-to?url=data/title.html
title: Test title
Scenario: Valid UTF-8 data
When I open data/sessions/snowman.html
Then the session should look like:
windows:
- tabs:
- history:
- url: about:blank
- url: http://localhost:*/data/sessions/snowman.html
title: snow☃man
@qtwebengine_skip
Scenario: Long output comparison (qtwebkit)
When I open data/numbers/1.txt
And I open data/title.html
And I open data/numbers/2.txt in a new tab
And I open data/numbers/3.txt in a new window
# Full output apart from "geometry:" and the active window (needs qutewm)
Then the session should look like:
windows:
- tabs:
- history:
- scroll-pos:
x: 0
y: 0
title: about:blank
url: about:blank
zoom: 1.0
- scroll-pos:
x: 0
y: 0
title: http://localhost:*/data/numbers/1.txt
url: http://localhost:*/data/numbers/1.txt
zoom: 1.0
- active: true
scroll-pos:
x: 0
y: 0
title: Test title
url: http://localhost:*/data/title.html
zoom: 1.0
- active: true
history:
- active: true
scroll-pos:
x: 0
y: 0
title: ''
url: http://localhost:*/data/numbers/2.txt
zoom: 1.0
- tabs:
- active: true
history:
- active: true
scroll-pos:
x: 0
y: 0
title: ''
url: http://localhost:*/data/numbers/3.txt
zoom: 1.0
# FIXME:qtwebengine what's up with the titles there?
@qtwebkit_skip
Scenario: Long output comparison (qtwebengine)
When I open data/numbers/1.txt
And I open data/title.html
And I open data/numbers/2.txt in a new tab
And I open data/numbers/3.txt in a new window
# Full output apart from "geometry:" and the active window (needs qutewm)
Then the session should look like:
windows:
- tabs:
- history:
- title: about:blank
url: about:blank
- title: http://localhost:*/data/numbers/1.txt
url: http://localhost:*/data/numbers/1.txt
- active: true
scroll-pos:
x: 0
y: 0
title: Test title
url: http://localhost:*/data/title.html
zoom: 1.0
- active: true
history:
- active: true
scroll-pos:
x: 0
y: 0
title: localhost:*/data/numbers/2.txt
url: http://localhost:*/data/numbers/2.txt
zoom: 1.0
- tabs:
- active: true
history:
- active: true
scroll-pos:
x: 0
y: 0
title: localhost:*/data/numbers/3.txt
url: http://localhost:*/data/numbers/3.txt
zoom: 1.0
# https://github.com/qutebrowser/qutebrowser/issues/879
Scenario: Saving a session with a page using history.replaceState()
When I open data/sessions/history_replace_state.html without waiting
Then the javascript message "Called history.replaceState" should be logged
And the session should look like:
windows:
- tabs:
- history:
- url: about:blank
- active: true
url: http://localhost:*/data/sessions/history_replace_state.html?state=2
title: Test title
@qtwebengine_skip
Scenario: Saving a session with a page using history.replaceState() and navigating away (qtwebkit)
When I open data/sessions/history_replace_state.html
And I open data/hello.txt
Then the javascript message "Called history.replaceState" should be logged
And the session should look like:
windows:
- tabs:
- history:
- url: about:blank
- url: http://localhost:*/data/sessions/history_replace_state.html?state=2
# What we'd *really* expect here is "Test title", but that
# workaround is the best we can do.
title: http://localhost:*/data/sessions/history_replace_state.html?state=2
- active: true
url: http://localhost:*/data/hello.txt
# Seems like that bug is fixed upstream in QtWebEngine
@skip # Too flaky
Scenario: Saving a session with a page using history.replaceState() and navigating away
When I open data/sessions/history_replace_state.html without waiting
And I wait for "* Called history.replaceState" in the log
And I open data/hello.txt
Then the session should look like:
windows:
- tabs:
- history:
- url: about:blank
- url: http://localhost:*/data/sessions/history_replace_state.html?state=2
title: Test title
- active: true
url: http://localhost:*/data/hello.txt
# :session-save
Scenario: Saving to a directory
When I run :session-save (tmpdir)
Then the error "Error while saving session: *" should be shown
Scenario: Saving internal session without --force
When I run :session-save _internal
Then the error "_internal is an internal session, use --force to save anyways." should be shown
And the session _internal should not exist
Scenario: Saving internal session with --force
When I run :session-save --force _internal_force
Then the message "Saved session _internal_force." should be shown
And the session _internal_force should exist
Scenario: Saving current session without one loaded
Given I have a fresh instance
And I run :session-save --current
Then the error "No session loaded currently!" should be shown
Scenario: Saving current session after one is loaded
When I open data/numbers/1.txt
When I run :session-save current_session
And I run :session-load current_session
And I wait until data/numbers/1.txt is loaded
And I run :session-save --current
Then the message "Saved session current_session." should be shown
Scenario: Saving session
When I run :session-save session_name
Then the message "Saved session session_name." should be shown
And the session session_name should exist
Scenario: Saving session with --quiet
When I run :session-save --quiet quiet_session
Then "Saved session quiet_session." should be logged with level debug
And the session quiet_session should exist
Scenario: Saving session with --only-active-window
When I open data/numbers/1.txt
And I open data/numbers/2.txt in a new tab
And I open data/numbers/3.txt in a new window
And I open data/numbers/4.txt in a new tab
And I open data/numbers/5.txt in a new tab
And I run :session-save --only-active-window window_session_name
And I run :window-only
And I run :tab-only
And I run :session-load window_session_name
And I wait until data/numbers/3.txt is loaded
And I wait until data/numbers/4.txt is loaded
And I wait until data/numbers/5.txt is loaded
Then the session should look like:
windows:
- tabs:
- history:
- active: true
url: http://localhost:*/data/numbers/5.txt
- tabs:
- history:
- url: http://localhost:*/data/numbers/3.txt
- history:
- url: http://localhost:*/data/numbers/4.txt
- history:
- active: true
url: http://localhost:*/data/numbers/5.txt
# :session-delete
Scenario: Deleting a directory
When I run :session-delete (tmpdir)
Then "Error while deleting session!" should be logged
And the error "Error while deleting session: *" should be shown
Scenario: Deleting internal session without --force
When I run :session-save --force _internal
And I run :session-delete _internal
Then the error "_internal is an internal session, use --force to delete anyways." should be shown
And the session _internal should exist
Scenario: Deleting internal session with --force
When I run :session-save --force _internal
And I run :session-delete --force _internal
And I wait for "Deleted session _internal." in the log
Then the session _internal should not exist
Scenario: Normally deleting a session
When I run :session-save deleted_session
And I run :session-delete deleted_session
And I wait for "Deleted session deleted_session." in the log
Then the session deleted_session should not exist
Scenario: Deleting a session which doesn't exist
When I run :session-delete inexistent_session
Then the error "Session inexistent_session not found!" should be shown
# :session-load
Scenario: Loading a directory
When I run :session-load (tmpdir)
Then the error "Error while loading session: *" should be shown
Scenario: Loading internal session without --force
When I run :session-save --force _internal
And I run :session-load _internal
Then the error "_internal is an internal session, use --force to load anyways." should be shown
@qtwebengine_flaky
Scenario: Loading internal session with --force
When I open about:blank
And I run :session-save --force _internal
And I replace "about:blank" by "http://localhost:(port)/data/numbers/1.txt" in the "_internal" session file
And I run :session-load --force _internal
Then data/numbers/1.txt should be loaded
@qtwebengine_flaky
Scenario: Normally loading a session
When I open about:blank
And I run :session-save loaded_session
And I replace "about:blank" by "http://localhost:(port)/data/numbers/2.txt" in the "loaded_session" session file
And I run :session-load loaded_session
Then data/numbers/2.txt should be loaded
@qtwebengine_flaky
Scenario: Loading and deleting a session
When I open about:blank
And I run :session-save loaded_session
And I replace "about:blank" by "http://localhost:(port)/data/numbers/2.txt" in the "loaded_session" session file
And I run :session-load --delete loaded_session
And I wait for "Loaded & deleted session loaded_session." in the log
Then data/numbers/2.txt should be loaded
And the session loaded_session should not exist
Scenario: Loading a session which doesn't exist
When I run :session-load inexistent_session
Then the error "Session inexistent_session not found!" should be shown
# Test load/save of pinned tabs
@qtwebengine_flaky
Scenario: Saving/Loading a session with pinned tabs
When I open data/numbers/1.txt
And I open data/numbers/2.txt in a new tab
And I open data/numbers/3.txt in a new tab
And I run :tab-pin with count 2
And I run :session-save pin_session
And I run :tab-only --force
And I run :tab-close --force
And I run :session-load -c pin_session
And I wait until data/numbers/3.txt is loaded
And I run :tab-focus 2
And I run :open hello world
Then the message "Tab is pinned!" should be shown
And the following tabs should be open:
- data/numbers/1.txt
- data/numbers/2.txt (active) (pinned)
- data/numbers/3.txt
|