Heavenfighter
0305a10eae
Refactored category and special attribute ( #550 )
2025-06-12 14:08:06 +02:00
Heavenfighter
4d48427234
fix: detect payment form and wait or user input ( #520 )
...
Co-authored-by: Jens Bergmann <1742418+1cu@users.noreply.github.com >
2025-06-10 15:51:59 +02:00
Jens Bergmann
92ac17b430
fix: improve login flow tests
...
Login Flow Tests:
- Fixed test_login_flow_handles_captcha to properly handle both login
attempts
- Added individual test functions for each component of the login flow:
* test_check_and_wait_for_captcha: Tests captcha detection and user
interaction
* test_fill_login_data_and_send: Tests login form filling and
submission
* test_handle_after_login_logic: Tests post-login handling (device
verification, GDPR)
- Improved test assertions to match actual behavior of the login process
- Added proper async mocking to prevent test stalling
Test Init:
- Fixed test_extract_pricing_info to properly handle all price formats
- Improved test coverage for price extraction edge cases
- Ensured tests accurately reflect the actual behavior of the price
extraction logic
2025-06-09 21:39:56 +02:00
sebthom
ebfdbc4313
fix: shipping options are not applied when shipping_costs set to 0 #541
2025-06-09 20:58:04 +02:00
Jens Bergmann
50656ad7e2
feat: Improve test coverage ( #515 )
...
* test: implement comprehensive test coverage improvements
This commit improves test coverage across multiple modules, adding unit tests
for core functionality.
Key improvements:
1. WebScrapingMixin:
- Add comprehensive async error handling tests
- Add session management tests (browser crash recovery, session expiration)
- Add element interaction tests (custom wait conditions, timeouts)
- Add browser configuration tests (extensions, preferences)
- Add robust awaitable mocking infrastructure
- Rename integration test file to avoid naming conflicts
2. Error Handlers:
- Add tests for error message formatting
- Add tests for error recovery scenarios
- Add tests for error logging functionality
3. Network Utilities:
- Add tests for port checking functionality
- Add tests for network error handling
- Add tests for connection management
4. Pydantic Models:
- Add tests for validation cases
- Add tests for error handling
- Add tests for complex validation scenarios
Technical details:
- Use TrulyAwaitableMockPage for proper async testing
- Add comprehensive mocking for browser and page objects
- Add proper cleanup in session management tests
- Add browser-specific configuration tests (Chrome/Edge)
- Add proper type hints and docstrings
Files changed:
- Renamed: tests/integration/test_web_scraping_mixin.py → tests/integration/test_web_scraping_mixin_integration.py
- Added: tests/unit/test_error_handlers.py
- Added: tests/unit/test_net.py
- Added: tests/unit/test_pydantics.py
- Added: tests/unit/test_web_scraping_mixin.py
* test: enhance test coverage with additional edge cases and scenarios
This commit extends the test coverage improvements with additional test cases
and edge case handling, focusing on browser configuration, error handling, and
file utilities.
Key improvements:
1. WebScrapingMixin:
- Add comprehensive browser binary location detection tests
- Add cross-platform browser path detection (Linux, macOS, Windows)
- Add browser profile configuration tests
- Add session state persistence tests
- Add external process termination handling
- Add session creation error cleanup tests
- Improve browser argument configuration tests
- Add extension loading validation tests
2. Error Handlers:
- Add debug mode error handling tests
- Add specific error type tests (AttributeError, ImportError, NameError, TypeError)
- Improve error message formatting tests
- Add traceback inclusion verification
3. Pydantic Models:
- Add comprehensive validation error message tests
- Add tests for various error codes and contexts
- Add tests for pluralization in error messages
- Add tests for empty error list handling
- Add tests for context handling in validation errors
4. File Utilities:
- Add comprehensive path resolution tests
- Add tests for file and directory reference handling
- Add tests for special path cases
- Add tests for nonexistent path handling
- Add tests for absolute and relative path conversion
Technical details:
- Add proper type casting for test fixtures
- Improve test isolation and cleanup
- Add platform-specific browser path detection
- Add proper error context handling
- Add comprehensive error message formatting tests
- Add proper cleanup in session management tests
- Add browser-specific configuration tests
- Add proper path normalization and resolution tests
* fix(test): handle Linux browser paths in web_scraping_mixin test
Update mock_exists to properly detect Linux browser binaries in test_browser_profile_configuration, fixing the "Installed browser could not be detected" error.
* fix(test): handle Windows browser paths in web_scraping_mixin test
Add Windows browser paths to mock_exists function to properly detect browser binaries on Windows platform, fixing the "Specified browser binary does not exist" error.
2025-05-18 19:02:59 +02:00
sebthom
85a5cf5224
feat: improve content_hash calculation
2025-05-15 12:07:49 +02:00
sebthom
6ede14596d
feat: add type safe Ad model
2025-05-15 12:07:49 +02:00
sebthom
1369da1c34
feat: add type safe Config model
2025-05-15 12:07:49 +02:00
Heavenfighter
0faa022e4d
fix: Unable to download single ad ( #509 )
2025-05-14 11:24:16 +02:00
sebthom
1f9895850f
fix: add missing translations and fix translation loading/testing
2025-05-13 19:27:52 +02:00
Benedikt
8b2d61b1d4
fix: improve login detection with fallback element ( #493 )
...
- Add fallback check for user-email element when mr-medium is not found
- Improve login detection reliability
- Add test case for alternative login element
2025-04-30 17:50:58 +02:00
Benedikt
9bcc669c48
feat: add support for multiple matching shipping options ( #483 )
2025-04-29 21:02:09 +02:00
sebthom
bda0acf943
refact: enable ruff preview rules
2025-04-28 13:17:23 +02:00
sebthom
f98251ade3
fix: improve ad description length validation
2025-04-28 13:17:23 +02:00
sebthom
ef923a8337
refact: apply consistent formatting
2025-04-28 12:55:28 +02:00
sebthom
376ec76226
refact: use ruff instead of autopep8,bandit,pylint for linting
2025-04-28 12:51:51 +02:00
marvinkcode
79af6ba861
fix: Correct pagination selectors and logic for issue #477 ( #479 )
2025-04-21 20:26:02 +02:00
sebthom
21835d9d86
test: don't require translations for debug messages
2025-04-07 22:40:41 +02:00
Jens Bergmann
6bd5ba98d2
fix: Clean up obsolete translations in German language file
...
- Remove unused translation entries from translations.de.yaml
- Improve translation test to better detect obsolete entries
- Add KNOWN_NEEDED_MODULES for special cases
- Add helper function _message_exists_in_code for better translation verification
- Improve error messages to show both original and translated text
- Fix import sorting in test file
This commit improves the maintainability of the translation system by
removing unused entries and enhancing the verification process.
2025-03-13 12:05:46 +01:00
Jens Bergmann
772326003f
fix: Separate 'changed' and 'due' ad selectors ( #442 )
...
This commit implements a new 'changed' selector for the --ads option that
publishes only ads that have been modified since their last publication.
The 'due' selector now only republishes ads based on the time interval,
without considering content changes.
The implementation allows combining selectors with commas (e.g., --ads=changed,due)
to publish both changed and due ads. Documentation and translations have been
updated accordingly.
Fixes #411
2025-02-28 14:53:53 -05:00
Jens Bergmann
c7f7b832b2
fix: Make description field optional in ad_defaults
...
The description field in the main configuration (ad_defaults) is now optional.
Previously, the bot would fail if no description or affixes were provided in
the main configuration. This change addresses issue #435 .
Changes:
- Add fallback to empty string ("") when all description prefix/suffix sources
are None in __get_description_with_affixes method
- Add comprehensive test suite for description handling in test_init.py
- Fix coverage path in pyproject.toml from 'kleinanzeigen_bot' to
'src/kleinanzeigen_bot'
New tests cover:
- Description handling without main config description
- New format affixes in configuration
- Mixed old/new format affixes
- Ad-level affix precedence
- None value handling in affixes
- Email address @ symbol replacement
This change maintains backward compatibility while making the description
field optional in the main configuration, improving flexibility for users.
2025-02-18 21:39:53 +01:00
Heavenfighter
543d46631c
fix: Setting shipping options fails for commercial accounts. Fixes #394 ( #424 )
...
Co-authored-by: Jens Bergmann <1742418+1cu@users.noreply.github.com >
2025-02-13 17:13:32 +01:00
Jens Bergmann
e43ac4f1f9
feat: extend translations and add translation unit test ( #427 )
2025-02-12 22:25:05 +01:00
Jens Bergmann
4051620aed
enh: allow per-ad overriding of global description affixes ( #416 )
2025-02-11 23:39:26 +01:00
sebthom
367ef07798
refact: improve logger handling
2025-02-10 20:34:58 +01:00
sebthom
2402ba2572
refact: reorganize utility modules
2025-02-10 06:23:17 +01:00
sebthom
7169975d2a
fix: logging file handler not closed on bot shutdown. Fixes #405
2025-02-09 04:23:24 +01:00
Jens Bergmann
affde0debf
test: Enhance test coverage for KleinanzeigenBot initialization and core functionality ( #408 )
2025-02-09 03:33:01 +01:00
1cu
f4f00b9563
test: Add comprehensive test suite for extract.py ( #400 )
2025-02-05 23:35:45 +01:00
1cu
76b0901166
test: reorganized unit/integration tests ( #398 )
2025-02-03 17:05:14 +01:00
Jens Bergmann
100f2fd8c5
style: ensure all comments and strings are in English - Update test descriptions and comments
2025-02-03 14:15:47 +01:00
Jens Bergmann
be8eee6aa0
fix: Handle None values in calculate_content_hash - Add test case to reproduce TypeError with None values - Fix handling of None values in special_attributes, shipping_options and images - Ensure consistent empty value handling (empty string instead of 'None') - Fixes #395
2025-02-03 14:15:47 +01:00
sebthom
9d54a949e7
feat: add multi-language support
2024-12-27 13:04:30 +01:00
sebthom
ab953111d4
ci: fix linux builds
2024-12-12 22:09:57 +01:00
sebthom
d5ae070bb3
chore: Update Python dependencies
2024-03-11 00:41:20 +01:00
sebthom
a441c5de73
replace selenium with nodriver
2024-03-07 20:33:23 +01:00
sebthom
115fb82064
remove webdriver-manager dependency
2024-03-04 13:27:17 +01:00
sebthom
4acf32d3dd
update copyright notice
2023-10-15 18:00:45 +02:00
sebthom
d4073fbcb3
support local build with nektos/act
2023-09-17 17:10:07 +02:00
sebthom
1de13bf43b
upgrade webdriver-manager and improve browser version detection
2022-03-22 14:12:52 +01:00
sebthom
12ff0bb3c3
extend utils.ensure()
2022-02-16 21:55:57 +01:00
sebthom
0b46322a47
separate unit/integration tests
2022-02-10 05:14:44 +01:00
sebthom
0e2e9c8669
Fixes #8 test webdriver auto-detection/download
2022-02-10 04:51:08 +01:00
sebthom
ea04b85007
Attach macOS and Linux binaries to release
2022-01-30 09:25:32 +01:00
sebthom
1e1cffeab7
Fixes #17 #18 Use pdm + pyinstaller
2022-01-30 07:31:13 +01:00