7
- Allow `.select()` on <select>s and <select multiple>s.
14
- Allow selecting <select> options by text
21
- Ignore the `value` attribute of file inputs
24
- Allow selecting the form submit button by its value
31
- Depend on `unittest2` only for Python versions lower than 2.7
34
- Add an optional parameter to `TestApp`, allowing the user to specify the
35
parser used by BeautifulSoup
42
- Make StopableWSGIServer thread daemonic
49
- Make sure Upload.content_type is not ignored
50
https://github.com/Pylons/webtest/pull/88
57
- Allow checking/unchecking a set of same-named checkboxes by assigning a list of values.
60
- fix "AttributeError: 'InputWrapper' object has no attribute 'seek'"
63
- Added `xhr=True` parameter to `TestApp.get`, `TestApp.post`, `TestApp.head`, `TestApp.delete`
66
- Remove old (and broken?) casperjs/selenium backward compat imports. Fix
67
https://github.com/gawel/webtest-selenium/issues/9
70
- Allow optionally specifying the MIME type of an uploaded form file. Fixes #86
77
- Detect JSON if mimetype ends with +json, such as application/vnd.webtest+json
80
- Fixed #72. Use WSGIServer new api even if there waitress has backward compat.
83
- Fixed #50. Corrected default value for the delete params argument.
86
- Be sure to decode the content if it is gziped before returning it
93
- fixed #64. cookiejar api has changed in python3.3 [gawel]
95
- allow to use a fixed StopableWSGIServer [gawel]
97
- Do not alter the BeautifulSoup object when parsing forms. [Georges
100
- Remove first newline while parse textarea block, how modern browsers does.
101
[Victor Safronovich] pull #69
107
* Ignore select.error (not socket.error) following
108
StopableWSGIServer.shutdown. [Laurence Rowe]
110
* Handle the short form of <select multiple> [Marius Gedminas]
116
* Correctly handle <option> elements with no value attribute
119
* Ignore socket.error following StopableWSGIServer.shutdown. [Laurence Rowe]
121
* <button> without type='submit' attribute is treated as Submit
122
control [Andrey Lebedev].
124
* Support for redirects having relative "Location" header [Andrey Lebedev]
130
* Treat strings in the WSGI environment as native strings, compliant with
137
* Allow TestResponse.click() to match HTML content again. [ender672]
139
* Support secure cookies [Andrey Lebedev]
144
* Added Pasword field [diarmuidbourke]
146
* re-allow to use unknow field type. Like ``type="email"``. [gawel]
148
* Don't let BeautifulSoup use lxml. Fix GH-51 [kmike]
150
* added :meth:`webtest.response.TestResponse.maybe_follow` method [kmike]
155
* drop zc.buildout usage for development, now using only virtualenv
158
* Backward incompatibility : Removed the ``anchor`` argument of
159
:meth:`webtest.response.TestResponse.click` and the ``button`` argument of
160
:meth:`webtest.response.TestResponse.clickbutton`. It is for the greater good.
163
* Rewrote API documentation [Domen Kožar]
165
* Added `wsgiproxy` support to do HTTP request to an URL [gawel]
167
* Use BeautifulSoup4 to parse forms [gawel]
169
* Added `webtest.app.TestApp.patch_json` [gawel]
171
* Implement `webtest.app.TestApp.cookiejar` support and kindof keep
172
`webtest.app.TestApp.cookies` functionality. `webtest.app.TestApp.cookies`
173
should be treated as read-only.
176
* Split Selenium integration into separate package webtest-selenium
179
* Split casperjs integration into separate package webtest-casperjs
182
* Test coverage improvements [harobed, cdevienne, arthru, Domen Kožar, gawel]
184
* Fully implement decoding of HTML entities
186
* Fix tox configuration
191
* fix tests error due to CLRF in a tarball
198
* migrate repository to https://github.com/Pylons/webtest
200
* Fix a typo in apps.py: selectedIndicies
202
* Preserve field order during parsing (support for deform and such)
204
* allow equals sign in the cookie by spliting name-value-string pairs on
205
the first '=' sign as per
206
http://tools.ietf.org/html/rfc6265#section-5.2
208
* fix an error when you use AssertionError(response) with unicode chars in
214
* added webtest.ext - allow to use casperjs
219
* fix `#42 <https://bitbucket.org/ianb/webtest/issue/42>`_ Check uppercase
222
* fix `#36 <https://bitbucket.org/ianb/webtest/issue/36>`_ Radio can use forced
225
* fix `#24 <https://bitbucket.org/ianb/webtest/issue/24>`_ Include test
228
* fix bug when trying to print a response which contain some unicode chars
233
* fix `#39 <https://bitbucket.org/ianb/webtest/issue/39>`_ Add PATCH to
240
* fix `#33 <https://bitbucket.org/ianb/webtest/issue/33>`_ Remove
241
CaptureStdout. Do nothing and break pdb
243
* use OrderedDict to store fields in form. See
244
`#31 <https://bitbucket.org/ianb/webtest/issue/31>`_
246
* fix `#38 <https://bitbucket.org/ianb/webtest/issue/38>`_ Allow to post falsey
249
* fix `#37 <https://bitbucket.org/ianb/webtest/issue/37>`_ Allow
250
Content-Length: 0 without Content-Type
252
* `fix #30 <https://bitbucket.org/ianb/webtest/issue/30>`_ bad link to pyquery
255
* Never catch NameError during iteration
260
* added ``post_json``, ``put_json``, ``delete_json``
262
* fix `#25 <https://bitbucket.org/ianb/webtest/issue/25>`_ params dictionary of
263
webtest.AppTest.post() does not support unicode values
268
* improve showbrowser. fixed `#23 <https://bitbucket.org/ianb/webtest/issue/23>`_
270
* print_stderr fail with unicode string on python2
275
* Added .option() `#20 <https://bitbucket.org/ianb/webtest/issue/20>`_
279
* Full python3 compat
284
* Moved TestApp to app.py
286
* Added selenium testing framework. See :mod:`~webtest.sel` module.
292
* Accept lists for ``app.post(url, params=[...])``
294
* Allow to use url that starts with the SCRIPT_NAME found in extra_environ
296
* Fix `#16 <https://bitbucket.org/ianb/webtest/issue/16>`_ Default
297
content-type is now correctly set to `application/octet-stream`
299
* Fix `#14 and #18 <https://bitbucket.org/ianb/webtest/issue/18>`_ Allow to use
302
* Fix `#12 <https://bitbucket.org/ianb/webtest/issue/12>`_
309
<http://bitbucket.org/ianb/webtest/issue/10/testapprequest-method-overwrites-specifics-with-testapp-scoped>`_,
310
now `TestApp.extra_environ` doesn't take precedence over a WSGI
311
environment passed in through the request.
313
* Removed stray print
318
* Revert change to cookies that would add ``"`` around cookie values.
320
* Added property :meth:`webtest.Response.pyquery` which returns a
321
`PyQuery <http://pyquery.org/>`_ object.
323
* Set base_url on ``resp.lxml``
325
* Include tests and docs in tarball.
327
* Fix sending in webob.Request (or webtest.TestRequest) objects.
329
* Fix handling forms with file uploads, when no file is selected.
331
* Added ``extra_environ`` argument to :meth:`webtest.TestResponse.click`.
333
* Fixed/added wildcard statuses, like ``status="4*"``
335
* Fix file upload fields in forms: allow upload field to be empty.
337
* Added support for single-quoted html attributes.
339
* `TestResponse` now has unicode support. It is turned on by default
340
for all responses with charset information. **This is backward
341
incompatible change** if you rely (e.g. in doctests) on parsed
342
form fields or responses returned by `json` and `lxml` methods
343
being encoded strings when charset header is in response. In order
344
to switch to old behaviour pass `use_unicode=False` flag to
345
`TestApp` constructor.
351
* Added method :meth:`TestApp.request`, which can be used for
352
sending requests with different methods (e.g., ``MKCOL``). This
353
method sends all its keyword arguments to
354
:meth:`webtest.TestRequest.blank` and then executes the request.
355
The parameters are somewhat different than other methods (like
356
:meth:`webtest.TestApp.get`), as they match WebOb's attribute
357
names exactly (the other methods were written before WebOb existed).
359
* Removed the copying of stdout to stderr during requests.
361
* Fix file upload fields in forms (`#340
362
<http://trac.pythonpaste.org/pythonpaste/ticket/340>`_) -- you could
363
upload files with :meth:`webtest.TestApp.post`, but if you use
364
``resp.form`` file upload fields would not work (from rcs-comp.com
365
and Matthew Desmarais).
370
* Fix form inputs; text inputs always default to the empty string, and
371
unselected radio inputs default to nothing at all. From Daniele
374
* Fix following links with fragments (these fragments should not be
375
sent to the WSGI application). From desmaj.
377
* Added ``force_value`` to select fields, like
378
``res.form['select'].force_value("new_value")``. This makes it
379
possible to simulate forms that are dynamically updated. From
382
* Fixed :meth:`webtest.Response.mustcontain` when you pass in a
383
``no=[strings]`` argument.
388
* Changed the ``__str__`` of responses to make them more doctest
391
- All headers are displayed capitalized, like Content-Type
392
- Headers are sorted alphabetically
394
* Changed ``__repr__`` to only show the body length if the complete
395
body is not shown (for short bodies the complete body is in the
398
* Note: **these are backward incompatible changes** if you are using
399
doctest (you'll have to update your doctests with the new format).
401
* Fixed exception in the ``.delete`` method.
403
* Added a ``content_type`` argument to ``app.post`` and ``app.put``,
404
which sets the ``Content-Type`` of the request. This is more
405
convenient when testing REST APIs.
407
* Skip links in ``<script>...</script>`` tags (since that's not real
413
* Don't submit unnamed form fields.
415
* Checkboxes with no explicit ``value`` send ``on`` (previously they
416
sent ``checked``, which isn't what browsers send).
418
* Support for ``<select multiple>`` fields (from Matthew Desmarais)
423
* Fix the ``TestApp`` validator's InputWrapper lacking support for
424
readline with an argument as needed by the cgi module.
429
* Keep URLs in-tact in cases such as
430
``app.get('http://www.python.org')`` (so HTTP_HOST=www.python.org,
433
* Fix ``lxml.html`` import, so lxml 2.0 users can get HTML lxml
434
objects from ``resp.lxml``
436
* Treat ``<input type="image">`` like a submit button.
438
* Use ``BaseCookie`` instead of ``SimpleCookie`` for storing cookies
439
(avoids quoting cookie values).
441
* Accept any ``params`` argument that has an ``items`` method (like