import os
import pytest
import re
import shutil

import capybara
from capybara.tests.compat import patch


@pytest.mark.requires("screenshot")
class TestSaveScreenshot:
    @pytest.fixture
    def alternative_path(self):
        return os.path.join(os.getcwd(), "save_screenshot_tmp")

    @pytest.fixture(autouse=True)
    def setup_session(self, session):
        session.visit("/foo")

    @pytest.fixture(autouse=True)
    def teardown_settings_and_files(self, alternative_path):
        yield

        capybara.save_path = None

        if os.path.isdir(alternative_path):
            shutil.rmtree(alternative_path)

    def test_generates_sensible_filename(self, session):
        with patch.object(session.driver, "save_screenshot") as save_screenshot:
            session.save_screenshot()

            regex = re.compile(os.path.abspath("capybara-\d+\.png"))

            assert len(save_screenshot.call_args_list) == 1
            assert regex.search(save_screenshot.call_args[0][0])

    def test_allows_one_to_specify_another_path(self, session, alternative_path):
        with patch.object(session.driver, "save_screenshot") as save_screenshot:
            capybara.save_path = alternative_path

            custom_path = "screenshots/1.png"
            session.save_screenshot(custom_path)

            regex = re.compile(re.escape(custom_path) + "$")

            assert len(save_screenshot.call_args_list) == 1
            assert regex.search(save_screenshot.call_args[0][0])

    def test_saves_file_in_custom_save_path(self, session, alternative_path):
        with patch.object(session.driver, "save_screenshot") as save_screenshot:
            capybara.save_path = alternative_path

            session.save_screenshot()

            regex = re.compile(os.path.normpath(os.path.join(alternative_path, "capybara-\d+\.png")))

            assert len(save_screenshot.call_args_list) == 1
            assert regex.search(save_screenshot.call_args[0][0])

    def test_saves_file_relative_to_custom_save_path(self, session, alternative_path):
        with patch.object(session.driver, "save_screenshot") as save_screenshot:
            capybara.save_path = alternative_path

            custom_path = "screenshots/1.png"
            session.save_screenshot(custom_path)

            regex = re.compile(os.path.normpath(os.path.join(alternative_path, re.escape(custom_path))))

            assert len(save_screenshot.call_args_list) == 1
            assert regex.search(save_screenshot.call_args[0][0])

b4b6782df51f61e13eaf963ca391e1c6f443dff1
<mask token>


@pytest.mark.requires('screenshot')
class TestSaveScreenshot:
    <mask token>
    <mask token>
    <mask token>
    <mask token>

    def test_allows_one_to_specify_another_path(self, session, alternative_path
        ):
        with patch.object(session.driver, 'save_screenshot'
            ) as save_screenshot:
            capybara.save_path = alternative_path
            custom_path = 'screenshots/1.png'
            session.save_screenshot(custom_path)
            regex = re.compile(re.escape(custom_path) + '$')
            assert len(save_screenshot.call_args_list) == 1
            assert regex.search(save_screenshot.call_args[0][0])
    <mask token>

    def test_saves_file_relative_to_custom_save_path(self, session,
        alternative_path):
        with patch.object(session.driver, 'save_screenshot'
            ) as save_screenshot:
            capybara.save_path = alternative_path
            custom_path = 'screenshots/1.png'
            session.save_screenshot(custom_path)
            regex = re.compile(os.path.normpath(os.path.join(
                alternative_path, re.escape(custom_path))))
            assert len(save_screenshot.call_args_list) == 1
            assert regex.search(save_screenshot.call_args[0][0])

<mask token>


@pytest.mark.requires('screenshot')
class TestSaveScreenshot:

    @pytest.fixture
    def alternative_path(self):
        return os.path.join(os.getcwd(), 'save_screenshot_tmp')

    @pytest.fixture(autouse=True)
    def setup_session(self, session):
        session.visit('/foo')

    @pytest.fixture(autouse=True)
    def teardown_settings_and_files(self, alternative_path):
        yield
        capybara.save_path = None
        if os.path.isdir(alternative_path):
            shutil.rmtree(alternative_path)
    <mask token>

    def test_allows_one_to_specify_another_path(self, session, alternative_path
        ):
        with patch.object(session.driver, 'save_screenshot'
            ) as save_screenshot:
            capybara.save_path = alternative_path
            custom_path = 'screenshots/1.png'
            session.save_screenshot(custom_path)
            regex = re.compile(re.escape(custom_path) + '$')
            assert len(save_screenshot.call_args_list) == 1
            assert regex.search(save_screenshot.call_args[0][0])
    <mask token>

    def test_saves_file_relative_to_custom_save_path(self, session,
        alternative_path):
        with patch.object(session.driver, 'save_screenshot'
            ) as save_screenshot:
            capybara.save_path = alternative_path
            custom_path = 'screenshots/1.png'
            session.save_screenshot(custom_path)
            regex = re.compile(os.path.normpath(os.path.join(
                alternative_path, re.escape(custom_path))))
            assert len(save_screenshot.call_args_list) == 1
            assert regex.search(save_screenshot.call_args[0][0])

<mask token>


@pytest.mark.requires('screenshot')
class TestSaveScreenshot:

    @pytest.fixture
    def alternative_path(self):
        return os.path.join(os.getcwd(), 'save_screenshot_tmp')

    @pytest.fixture(autouse=True)
    def setup_session(self, session):
        session.visit('/foo')

    @pytest.fixture(autouse=True)
    def teardown_settings_and_files(self, alternative_path):
        yield
        capybara.save_path = None
        if os.path.isdir(alternative_path):
            shutil.rmtree(alternative_path)

    def test_generates_sensible_filename(self, session):
        with patch.object(session.driver, 'save_screenshot'
            ) as save_screenshot:
            session.save_screenshot()
            regex = re.compile(os.path.abspath('capybara-\\d+\\.png'))
            assert len(save_screenshot.call_args_list) == 1
            assert regex.search(save_screenshot.call_args[0][0])

    def test_allows_one_to_specify_another_path(self, session, alternative_path
        ):
        with patch.object(session.driver, 'save_screenshot'
            ) as save_screenshot:
            capybara.save_path = alternative_path
            custom_path = 'screenshots/1.png'
            session.save_screenshot(custom_path)
            regex = re.compile(re.escape(custom_path) + '$')
            assert len(save_screenshot.call_args_list) == 1
            assert regex.search(save_screenshot.call_args[0][0])

    def test_saves_file_in_custom_save_path(self, session, alternative_path):
        with patch.object(session.driver, 'save_screenshot'
            ) as save_screenshot:
            capybara.save_path = alternative_path
            session.save_screenshot()
            regex = re.compile(os.path.normpath(os.path.join(
                alternative_path, 'capybara-\\d+\\.png')))
            assert len(save_screenshot.call_args_list) == 1
            assert regex.search(save_screenshot.call_args[0][0])

    def test_saves_file_relative_to_custom_save_path(self, session,
        alternative_path):
        with patch.object(session.driver, 'save_screenshot'
            ) as save_screenshot:
            capybara.save_path = alternative_path
            custom_path = 'screenshots/1.png'
            session.save_screenshot(custom_path)
            regex = re.compile(os.path.normpath(os.path.join(
                alternative_path, re.escape(custom_path))))
            assert len(save_screenshot.call_args_list) == 1
            assert regex.search(save_screenshot.call_args[0][0])

import os
import pytest
import re
import shutil
import capybara
from capybara.tests.compat import patch


@pytest.mark.requires('screenshot')
class TestSaveScreenshot:

    @pytest.fixture
    def alternative_path(self):
        return os.path.join(os.getcwd(), 'save_screenshot_tmp')

    @pytest.fixture(autouse=True)
    def setup_session(self, session):
        session.visit('/foo')

    @pytest.fixture(autouse=True)
    def teardown_settings_and_files(self, alternative_path):
        yield
        capybara.save_path = None
        if os.path.isdir(alternative_path):
            shutil.rmtree(alternative_path)

    def test_generates_sensible_filename(self, session):
        with patch.object(session.driver, 'save_screenshot'
            ) as save_screenshot:
            session.save_screenshot()
            regex = re.compile(os.path.abspath('capybara-\\d+\\.png'))
            assert len(save_screenshot.call_args_list) == 1
            assert regex.search(save_screenshot.call_args[0][0])

    def test_allows_one_to_specify_another_path(self, session, alternative_path
        ):
        with patch.object(session.driver, 'save_screenshot'
            ) as save_screenshot:
            capybara.save_path = alternative_path
            custom_path = 'screenshots/1.png'
            session.save_screenshot(custom_path)
            regex = re.compile(re.escape(custom_path) + '$')
            assert len(save_screenshot.call_args_list) == 1
            assert regex.search(save_screenshot.call_args[0][0])

    def test_saves_file_in_custom_save_path(self, session, alternative_path):
        with patch.object(session.driver, 'save_screenshot'
            ) as save_screenshot:
            capybara.save_path = alternative_path
            session.save_screenshot()
            regex = re.compile(os.path.normpath(os.path.join(
                alternative_path, 'capybara-\\d+\\.png')))
            assert len(save_screenshot.call_args_list) == 1
            assert regex.search(save_screenshot.call_args[0][0])

    def test_saves_file_relative_to_custom_save_path(self, session,
        alternative_path):
        with patch.object(session.driver, 'save_screenshot'
            ) as save_screenshot:
            capybara.save_path = alternative_path
            custom_path = 'screenshots/1.png'
            session.save_screenshot(custom_path)
            regex = re.compile(os.path.normpath(os.path.join(
                alternative_path, re.escape(custom_path))))
            assert len(save_screenshot.call_args_list) == 1
            assert regex.search(save_screenshot.call_args[0][0])

import os
import pytest
import re
import shutil

import capybara
from capybara.tests.compat import patch


@pytest.mark.requires("screenshot")
class TestSaveScreenshot:
    @pytest.fixture
    def alternative_path(self):
        return os.path.join(os.getcwd(), "save_screenshot_tmp")

    @pytest.fixture(autouse=True)
    def setup_session(self, session):
        session.visit("/foo")

    @pytest.fixture(autouse=True)
    def teardown_settings_and_files(self, alternative_path):
        yield

        capybara.save_path = None

        if os.path.isdir(alternative_path):
            shutil.rmtree(alternative_path)

    def test_generates_sensible_filename(self, session):
        with patch.object(session.driver, "save_screenshot") as save_screenshot:
            session.save_screenshot()

            regex = re.compile(os.path.abspath("capybara-\d+\.png"))

            assert len(save_screenshot.call_args_list) == 1
            assert regex.search(save_screenshot.call_args[0][0])

    def test_allows_one_to_specify_another_path(self, session, alternative_path):
        with patch.object(session.driver, "save_screenshot") as save_screenshot:
            capybara.save_path = alternative_path

            custom_path = "screenshots/1.png"
            session.save_screenshot(custom_path)

            regex = re.compile(re.escape(custom_path) + "$")

            assert len(save_screenshot.call_args_list) == 1
            assert regex.search(save_screenshot.call_args[0][0])

    def test_saves_file_in_custom_save_path(self, session, alternative_path):
        with patch.object(session.driver, "save_screenshot") as save_screenshot:
            capybara.save_path = alternative_path

            session.save_screenshot()

            regex = re.compile(os.path.normpath(os.path.join(alternative_path, "capybara-\d+\.png")))

            assert len(save_screenshot.call_args_list) == 1
            assert regex.search(save_screenshot.call_args[0][0])

    def test_saves_file_relative_to_custom_save_path(self, session, alternative_path):
        with patch.object(session.driver, "save_screenshot") as save_screenshot:
            capybara.save_path = alternative_path

            custom_path = "screenshots/1.png"
            session.save_screenshot(custom_path)

            regex = re.compile(os.path.normpath(os.path.join(alternative_path, re.escape(custom_path))))

            assert len(save_screenshot.call_args_list) == 1
            assert regex.search(save_screenshot.call_args[0][0])
