Testing some of the new tests on Github action

This commit is contained in:
Karim shoair
2024-11-05 01:19:50 +02:00
parent bd612bb0e2
commit e594bba0c4
5 changed files with 80 additions and 3 deletions
+11
View File
@@ -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: |
+5 -1
View File
@@ -1,2 +1,6 @@
pytest
pytest-cov
pytest-cov
playwright
camoufox
pytest-httpbin
pytest-playwright
+1
View File
@@ -0,0 +1 @@
# Because I'm too lazy to mock requests :)
@@ -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)
+6 -2
View File
@@ -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