Skip to content

Commit

Permalink
Testing some of the new tests on Github action
Browse files Browse the repository at this point in the history
  • Loading branch information
D4Vinci committed Nov 4, 2024
1 parent bd612bb commit e594bba
Show file tree
Hide file tree
Showing 5 changed files with 80 additions and 3 deletions.
11 changes: 11 additions & 0 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,17 @@ jobs:
with:
python-version: ${{ matrix.python-version }}

- name: Install Playwright Dependencies
run: |
pip install playwright
playwright install chromium
playwright install-deps chromium
- name: Install Camoufox Dependencies
run: |
pip install camoufox
python -m camoufox fetch --browserforge
- name: Run tests
env: ${{ matrix.env }}
run: |
Expand Down
6 changes: 5 additions & 1 deletion tests/requirements.txt
Original file line number Diff line number Diff line change
@@ -1,2 +1,6 @@
pytest
pytest-cov
pytest-cov
playwright
camoufox
pytest-httpbin
pytest-playwright
1 change: 1 addition & 0 deletions tests/test_fetchers/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# Because I'm too lazy to mock requests :)
57 changes: 57 additions & 0 deletions tests/test_fetchers/test_stealthy_fetcher.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
import unittest
import pytest_httpbin

from scrapling import StealthyFetcher


@pytest_httpbin.use_class_based_httpbin
# @pytest_httpbin.use_class_based_httpbin_secure
class TestParser(unittest.TestCase):
def setUp(self):
self.fetcher = StealthyFetcher(auto_match=False)
# httpsbin = self.httpbin_secure.url
url = self.httpbin.url
self.status_200 = f'{url}/status/200'
self.status_404 = f'{url}/status/404'
self.status_501 = f'{url}/status/501'
self.basic_url = f'{url}/get'
self.html_url = f'{url}/html'

def test_basic_fetch(self):
"""Test doing basic fetch request with multiple statuses"""
self.assertEqual(self.fetcher.fetch(self.status_200).status, 200)
self.assertEqual(self.fetcher.fetch(self.status_404).status, 404)
self.assertEqual(self.fetcher.fetch(self.status_501).status, 501)

def test_networkidle(self):
"""Test if waiting for `networkidle` make page does not finish loading or not"""
self.assertEqual(self.fetcher.fetch(self.basic_url, network_idle=True).status, 200)

def test_blocking_resources(self):
"""Test if blocking resources make page does not finish loading or not"""
self.assertEqual(self.fetcher.fetch(self.basic_url, block_images=True).status, 200)
self.assertEqual(self.fetcher.fetch(self.basic_url, disable_resources=True).status, 200)

def test_waiting_selector(self):
"""Test if waiting for a selector make page does not finish loading or not"""
self.assertEqual(self.fetcher.fetch(self.html_url, wait_selector='h1').status, 200)

def test_automation(self):
"""Test if automation break the code or not"""
def scroll_page(page):
page.mouse.wheel(10, 0)
page.mouse.move(100, 400)
page.mouse.up()
return page

self.assertEqual(self.fetcher.fetch(self.html_url, page_action=scroll_page).status, 200)

def test_properties(self):
"""Test if different arguments breaks the code or not"""
self.assertEqual(self.fetcher.fetch(self.html_url, block_webrtc=True, allow_webgl=True).status, 200)
self.assertEqual(self.fetcher.fetch(self.html_url, block_webrtc=False, allow_webgl=True).status, 200)
self.assertEqual(self.fetcher.fetch(self.html_url, block_webrtc=True, allow_webgl=False).status, 200)

def test_infinite_timeout(self):
"""Test if infinite timeout breaks the code or not"""
self.assertEqual(self.fetcher.fetch(self.html_url, timeout=None).status, 200)
8 changes: 6 additions & 2 deletions tox.ini
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,18 @@
# and then run "tox" from this directory.

[tox]
envlist = pre-commit,py37,py38,py39,py310,py311,py312
envlist = pre-commit,py{38,39,310,311,312,313}

[testenv]
usedevelop = True
changedir = tests
deps =
-r{toxinidir}/tests/requirements.txt
commands = pytest --cov=scrapling --cov-report=xml
commands =
playwright install chromium
playwright install-deps chromium
camoufox fetch --browserforge
pytest --cov=scrapling --cov-report=xml

[testenv:pre-commit]
basepython = python3
Expand Down

0 comments on commit e594bba

Please sign in to comment.