Skip to content

Conversation

@ArthurRodrigues4433
Copy link

@ArthurRodrigues4433 ArthurRodrigues4433 commented Nov 1, 2025

Pull Request

Description

Esta PR refatora o sistema de preferências do browser (ChromiumOptions) para adicionar tipagem forte, validação e melhor tratamento de erros. As principais mudanças incluem:

  • Criação de TypedDicts para BrowserPreferences, DownloadPreferences e ProfilePreferences, garantindo tipo seguro e autocomplete em IDEs.
  • Introdução de PREFERENCE_SCHEMA para validação de caminhos e tipos de valores.
  • Métodos _validate_pref_path e _validate_pref_value adicionados para checagem rigorosa de caminhos e tipos de preferências.
  • Atualização de getters e setters (browser_preferences, prompt_for_download, password_manager_enabled, open_pdf_externally) para refletirem tipagem correta e retornarem Optional quando apropriado.
  • Melhor tratamento de erros com mensagens descritivas para WrongPrefsDict, InvalidPreferencePath e InvalidPreferenceValue.
  • Adição de testes unitários completos cobrindo validação, merges e acesso seguro às preferências.
  • Pequenas melhorias no temp_dir_manager e no tratamento de argumentos do ChromiumOptions.

Related Issue(s)

#289

Type of Change

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • Documentation update
  • Refactoring (melhoria interna, tipagem e validação)
  • Performance improvement
  • Tests (adição e correção de testes unitários)

How Has This Been Tested?

  • Testes unitários cobrindo:
    • Validação de caminhos de preferências válidos e inválidos
    • Validação de tipos de valores corretos e incorretos
    • Merge correto de preferências existentes
    • Acesso seguro a preferências existentes e inexistentes
  • Todos os testes existentes continuam passando.
  • Cobertura de código: 98%
# Exemplo de uso do novo sistema de tipos: browser_preferences: BrowserPreferences = { 'download': { 'default_directory': 'C:/Downloads', 'prompt_for_download': True }, 'profile': { 'password_manager_enabled': True }, 'credentials_enable_service': True }

Testing Checklist

  • Unit tests added/updated
  • Integration tests added/updated
  • All existing tests pass

Screenshots

Implementation Details

  • Introduzido BrowserPreferences como TypedDict
  • Implementado PREFERENCE_SCHEMA para validação estrutural
  • Adicionados métodos de validação de caminhos e valores
  • Propriedades atualizadas com Optional quando necessário
  • Melhor documentação interna e mensagens de erro claras
  • Correção de comando de formatação no pyproject.toml

API Changes

Não há mudanças na API pública. As alterações são internas e mantêm compatibilidade total com o código existente.

Additional Info

  • O código segue padrões PEP8 e padrões do projeto.
  • Tipagem e validação agora permitem autocompletar e reduzem erros em tempo de execução.
  • Todas as preferências existentes foram mantidas.

Checklist before requesting a review

  • My code follows the style guidelines of this project
  • I have performed a self-review of my code
  • I have commented my code, particularly in hard-to-understand areas
  • I have made corresponding changes to the documentation
  • My changes generate no new warnings
  • I have added tests that prove my fix is effective or that my feature works
  • New and existing unit tests pass locally with my changes
  • I have run poetry run task lint and fixed any issues
  • I have run poetry run task test and all tests pass
  • My commits follow the conventional commits style
@codecov
Copy link

codecov bot commented Nov 1, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@thalissonvs
Copy link
Member

Opa, tudo bem? precisa de alguma ajuda com os erros?

@ArthurRodrigues4433
Copy link
Author

Sim, Está passando nos testes locais mas sempre falha nos teste aqui do GitHub!

@ArthurRodrigues4433 ArthurRodrigues4433 force-pushed the refactor/browser-preferences-types branch 2 times, most recently from 652071c to b35cced Compare November 3, 2025 14:51
@ArthurRodrigues4433 ArthurRodrigues4433 force-pushed the refactor/browser-preferences-types branch from 225164b to c8731eb Compare November 3, 2025 18:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

2 participants