Metadata-Version: 1.1
Name: pytest-webdriver
Version: 1.7.0
Summary: Selenium webdriver fixture for py.test
Home-page: https://github.com/manahl/pytest-plugins
Author: Edward Easton
Author-email: eeaston@gmail.com
License: MIT license
Description: Pytest Webdriver Fixture
        ========================
        
        This fixture provides a configured webdriver for Selenium browser tests,
        that takes screenshots for you on test failures.
        
        Installation
        ------------
        
        Install using your favourite package installer:
        
        .. code:: bash
        
                pip install pytest-webdriver
                # or
                easy_install pytest-webdriver
        
        Enable the fixture explicitly in your tests or conftest.py (not required
        when using setuptools entry points):
        
        .. code:: python
        
                pytest_plugins = ['pytest_webdriver']
        
        Quickstart
        ----------
        
        This fixture connects to a remote selenium webdriver and returns the
        browser handle. It is scoped on a per-function level so you get one
        browser window per test.
        
        To use this fixture, follow the following steps.
        
        1. Nominate a browser host, and start up the webdriver executable on
           that host.
        2. Download the latest zip file from here:
           https://sites.google.com/a/chromium.org/chromedriver/downloads
        3. Unpack onto the target host, and run the unpacked chromedriver binary
           executable.
        4. Set the environment variable ``SELENIUM_HOST`` to the IP address or
           hostname of the browser host. This defaults to the local hostname.
        5. Set the environment variable ``SELENIUM_PORT`` to the port number of
           the webdriver server. The default port number is 4444.
        6. Set the environment variable ``SELENIUM_BROWSER`` to the browser
           type. Defaults to ``chrome``.
        7. Use the fixture as a test argument:
        
        .. code:: python
        
                   def test_mywebpage(webdriver):
                       webdriver.get('http://www.google.com')
        
        ``SELENIUM_URI`` setting
        ------------------------
        
        You can also specify the selenium server address using a URI format
        using the SELENIUM\_URL environment variable::
        
        .. code:: bash
        
                $ export SELENIUM_URI=http://localhost:4444/wd/hub
        
        This is needed when dealing with selenium server and not chrome driver
        (see
        https://groups.google.com/forum/?fromgroups#!topic/selenium-users/xodZDJxt81o).
        If SELENIUM\_URI is not defined SELENIUM\_HOST & SELENIUM\_PORT will be
        used.
        
        Automatic screenshots
        ---------------------
        
        When one of your browser tests fail, this plugin will take a screenshot
        for you and save it in the current working directory. The name will
        match the logical path to the test function that failed, like:
        
        ::
        
            test_login_page__LoginPageTest__test_unicode.png
        
        ``pytest-webdriver`` and `PageObjects <https://page-objects.readthedocs.org/en/latest/>`__
        ------------------------------------------------------------------------------------------
        
        If there is a pyramid\_server fixture from the also running in the
        current test, it will detect this and set the ``root_uri`` attribute on
        the webdriver instance:
        
        .. code:: python
        
                def test_my_pyramid_app(webdriver, pyramid_server):
                    assert webdriver.root_uri == pyramid_server.uri
        
        Why is this needed, you may ask? It can be used by the ``PageObjects``
        library to automatically set the base URL to your web app. This saves on
        a lot of string concatenation. For example:
        
        .. code:: python
        
                from page_objects import PageObject, PageElement
                
                class LoginPage(PageObject):
                    username = PageElement(id_='username')
                    password = PageElement(name='password')
                    login = PageElement(css='input[type="submit"]')
        
                def test_login_page(webdriver, pyramid_server):
                    page = LoginPage(webdriver)
                    page.login.click()
                    page.get('/foo/bar')
                    assert webdriver.getCurrentUrl() == pyramid_server.uri + '/foo/bar'
        
        
        Changelog
        ---------
        
        1.7.0
        ~~~~~
        
        -  All: Support pytest >= 4.0.0
        -  All: Support Python 3.7
        -  pytest-server-fixtures: if host not defined on your machine, default
           to localhost
        -  pytest-server-fixture: Pin to rethinkdb < 2.4.0 due to upstream API
           changes
        -  pytest-verbose-parametrize: Add support for revamped marker
           infrastructure
        -  pytest-verbose-parametrize: Fix integration tests to support pytest
           >= 4.1.0
        -  pytest-virtualenv: Add virtualenv as install requirement. Fixes #122
        -  pytest-webdriver: Fix RemovedInPytest4Warning using getfixturevalue
        -  circleci: Fix checks by skipping coverall submission for developer
           without push access
        -  wheels: Generate universal wheels installable with both python 2.x
           and 3.x
        -  dist: Remove support for building and distributing \*.egg files
        -  VagrantFile: Install python 3.7 and initialize python 3.7 by default
        -  Fix DeprecationWarning warnings using "logger.warning()" function
        
        1.6.2 (2019-02-21)
        ~~~~~~~~~~~~~~~~~~
        
        -  pytest-server-fixtures: suppress stacktrace if kill() is called
        -  pytest-server-fixtures: fix random port logic in TestServerV2
        
        1.6.1 (2019-02-12)
        ~~~~~~~~~~~~~~~~~~
        
        -  pytest-server-fixtures: fix exception when attempting to access
           hostname while server is not started
        
        1.6.0 (2019-02-12)
        ~~~~~~~~~~~~~~~~~~
        
        -  pytest-server-fixtures: added previously removed TestServerV2.kill()
           function
        -  pytest-profiling: pin more-itertools==5.0.0 in integration tests, as
           that's a PY3 only release
        
        1.5.1 (2019-01-24)
        ~~~~~~~~~~~~~~~~~~
        
        -  pytest-verbose-parametrize: fixed unicode parameters when using
           ``@pytest.mark.parametrize``
        
        1.5.0 (2019-01-23)
        ~~~~~~~~~~~~~~~~~~
        
        -  pytest-server-fixtures: made postgres fixtures and its tests
           optional, like all other fixtures
        -  pytest-server-fixtures: reverted a fix for pymongo deprecation
           warning, as this will break compatibility with pymongo 3.6.0
        -  pytest-server-fixtures: dropped RHEL5 support in httpd
        
        1.4.1 (2019-01-18)
        ~~~~~~~~~~~~~~~~~~
        
        -  pytest-server-fixtures: server fixture binary path specified in ENV
           now only affect server class 'thread'
        
        1.4.0 (2019-01-15)
        ~~~~~~~~~~~~~~~~~~
        
        -  Fixing python 3 compatibility in Simple HTTP Server fixture
        -  Fixed broken tests in pytest-profiling
        -  Pinned pytest<4.0.0 until all deprecation warnings are fixed.
        -  pytest-webdriver: replaced deprecated phantomjs with headless Google
           Chrome.
        -  Add Vagrantfile to project to make test environment portable.
        -  Add .editorconfig file to project.
        -  pytest-server-fixtures: add TestServerV2 with Docker and Kubernetes
           support.
        -  pytest-server-fixtures: fix for an issue where MinioServer is not
           cleaned up after use.
        -  pytest-server-fixtures: fix deprecation warnings when calling
           pymongo.
        -  pytest-server-fixtures: close pymongo client on MongoTestServer
           teardown.
        -  pytest-server-fixtures: upgrade Mongo, Redis and RethinkDB to
           TestServerV2.
        -  coveralls: fix broken coveralls
        
        1.3.1 (2018-06-28)
        ~~~~~~~~~~~~~~~~~~
        
        -  Use pymongo list\_database\_names() instead of the deprecated
           database\_names(), added pymongo>=3.6.0 dependency
        
        1.3.0 (2017-11-17)
        ~~~~~~~~~~~~~~~~~~
        
        -  Fixed workspace deletion when teardown is None
        -  Fixed squash of root logger in pytest-listener
        -  Added S3 Minio fixture (many thanks to Gavin Bisesi)
        -  Added Postgres fixture (many thanks to Gavin Bisesi)
        -  Use requests for server fixtures http gets as it handles redirects
           and proxies properly
        
        1.2.12 (2017-8-1)
        ~~~~~~~~~~~~~~~~~
        
        -  Fixed regression on cacheing ephemeral hostname, some clients were
           relying on this. This is now optional.
        
        1.2.11 (2017-7-21)
        ~~~~~~~~~~~~~~~~~~
        
        -  Fix for OSX binding to illegal local IP range (Thanks to Gavin
           Bisesi)
        -  Setup and Py3k fixes for pytest-profiling (Thanks to xoviat)
        -  We no longer try and bind port 5000 when reserving a local IP host,
           as someone could have bound it to 0.0.0.0
        -  Fix for #46 sourcing gprof2dot when the local venv has not been
           activated
        
        1.2.10 (2017-2-23)
        ~~~~~~~~~~~~~~~~~~
        
        -  Handle custom Pytest test items in pytest-webdriver
        
        1.2.9 (2017-2-23)
        ~~~~~~~~~~~~~~~~~
        
        -  Add username into mongo server fixture tempdir path to stop
           collisions on shared multiuser filesystems
        
        1.2.8 (2017-2-21)
        ~~~~~~~~~~~~~~~~~
        
        -  Return function results in shutil.run.run\_as\_main
        
        1.2.7 (2017-2-20)
        ~~~~~~~~~~~~~~~~~
        
        -  More handling for older versions of path.py
        -  Allow virtualenv argument passing in pytest-virtualenv
        
        1.2.6 (2017-2-16 )
        ~~~~~~~~~~~~~~~~~~
        
        -  Updated devpi server server setup for devpi-server >= 2.0
        -  Improvements for random port picking
        -  HTTPD server now binds to 0.0.0.0 by default to aid Selenium-style
           testing
        -  Updated mongodb server args for mongodb >= 3.2
        -  Corrections for mongodb fixture config and improve startup logic
        -  Added module-scoped mongodb fixture
        -  Handling for older versions of path.py
        -  Fix for #40 where tests that chdir break pytest-profiling
        
        1.2.5 (2016-12-09)
        ~~~~~~~~~~~~~~~~~~
        
        -  Improvements for server runner host and port generation, now supports
           random local IPs
        -  Bugfix for RethinkDB fixture config
        
        1.2.4 (2016-11-14)
        ~~~~~~~~~~~~~~~~~~
        
        -  Bugfix for pymongo extra dependency
        -  Windows compatibility fix for pytest-virtualenv (Thanks to
           Jean-Christophe Fillion-Robin for PR)
        -  Fix symlink handling for
           pytest-shutil.cmdline.get\_real\_python\_executable
        
        1.2.3 (2016-11-7)
        ~~~~~~~~~~~~~~~~~
        
        -  Improve resiliency of Mongo fixture startup checks
        
        1.2.2 (2016-10-27)
        ~~~~~~~~~~~~~~~~~~
        
        -  Python 3 compatibility across most of the modules
        -  Fixed deprecated Path.py imports (Thanks to Bryan Moscon)
        -  Fixed deprecated multicall in pytest-profiling (Thanks to Paul van
           der Linden for PR)
        -  Added devpi-server fixture to create an index per test function
        -  Added missing licence file
        -  Split up httpd server fixture config so child classes can override
           loaded modules easier
        -  Added 'preserve\_sys\_path' argument to TestServer base class which
           exports the current python sys.path to subprocesses.
        -  Updated httpd, redis and jenkins runtime args and paths to current
           Ubuntu spec
        -  Ignore errors when tearing down workspaces to avoid race conditions
           in 'shutil.rmtree' implementation
        
        1.2.1 (2016-3-1)
        ~~~~~~~~~~~~~~~~
        
        -  Fixed pytest-verbose-parametrize for latest version of py.test
        
        1.2.0 (2016-2-19)
        ~~~~~~~~~~~~~~~~~
        
        -  New plugin: git repository fixture
        
        1.1.1 (2016-2-16)
        ~~~~~~~~~~~~~~~~~
        
        -  pytest-profiling improvement: escape illegal characters in .prof
           files (Thanks to Aarni Koskela for the PR)
        
        1.1.0 (2016-2-15)
        ~~~~~~~~~~~~~~~~~
        
        -  New plugin: devpi server fixture
        -  pytest-profiling improvement: overly-long .prof files are saved as
           the short hash of the test name (Thanks to Vladimir Lagunov for PR)
        -  Changed default behavior of workspace.run() to not use a subshell for
           security reasons
        -  Corrected virtualenv.run() method to handle arguments the same as the
           parent method workspace.run()
        -  Removed deprecated '--distribute' from virtualenv args
        
        1.0.1 (2015-12-23)
        ~~~~~~~~~~~~~~~~~~
        
        -  Packaging bugfix
        
        1.0.0 (2015-12-21)
        ~~~~~~~~~~~~~~~~~~
        
        -  Initial public release
        
        
Platform: unix
Platform: linux
Classifier: License :: OSI Approved :: MIT License
Classifier: Development Status :: 5 - Production/Stable
Classifier: Topic :: Software Development :: Libraries
Classifier: Topic :: Software Development :: Testing
Classifier: Topic :: Software Development :: User Interfaces
Classifier: Intended Audience :: Developers
Classifier: Operating System :: POSIX
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
