May has been another month of steady progress - mostly on widget testing, but also in some other key areas of the project.
What we've done
- We've completed the audit of the TextInput, PasswordInput, and MultilineTextInput widgets; we've completed the audit of NumberInput, WebView, DateInput, TimeInput, and Selection on macOS, iOS and GTK; and we've begun the audit of ImageView.
- We've added documentation and tests for the input validation API as part of the TextInput audit.
- We've added documentation and tests for ListSource as part of the Selection audit, and modified the implementation of Selection to use a ListSource.
- We refactored the implementation of Dialog so that it is architecturally consistent with the rest of Toga; this will hopefully also lead to an easier testing story.
- We made significant progress in supporting custom fonts on GTK, including adding a GUI test of this capability.
- We completed a refactor of Briefcase's tool integrations. This introduces a consistent API for all tools that Briefcase uses, as well as introducing type annotations for a lot more of the codebase.
- We've introduced conditional coverage to the Briefcase codebase. This means developers who only have access to a single testing platform can get a 100% coverage report on their work before submitting to CI for cross-platform confirmation.
- We've helped triage a number of bugs in the Python 3.12.0b1 release (revealed by our testing for Briefcase and Rubicon-ObjC).
- We've modified Briefcase's Flatpak backend to require an explicit runtime, rather than falling back to a default runtime that is no longer supported.
- We developed a draft implementation of a Briefcase test runner for the Web backend. This is an important first step to being able to unit test Toga's Web backend; however, there's still a couple of technical challenges outstanding before we can complete that work.
- We've begun the process of upgrading Briefcase's Java support from Java 8 to Java 17.
June will be another month with a focus on GUI test coverage. We're still hoping that this work will be complete by the end of June - we're averaging 1-2 widgets a week, and we have 8 widgets remaining; however, every widget is throwing up unique challenges (and revealing deep bugs - sometimes in the underlying GUI frameworks), so it's possible the audit work may need to continue into July.
Want to get involved?
Want to get involved? Here are some open issues that would be a great place to get started with contributing to a BeeWare project. They're all relatively minor changes, but would provide a big improvement to the lives of BeeWare users:
- Filter out a message generated after Xcode updates
- Add the ability to configure the ABIs built by an Android project
- Add support for the ANDROID_HOME environment variable
- Rationalise the application of adhoc signing on macOS
- Detect a failure when trying to install on an Android device that is too old
- Use the on-device clock to filter Android device logs
- Add an APK packaging target for Android
- Provide an option to override app settings from the command line
Pick one of these tickets, drop a comment on the ticket to let others know you're looking at it, and try your hand at a PR! We have a guide on setting up a Briefcase development environment; but if you need any additional assistance or guidance, you can ask on the ticket, or join us on the BeeWare Discord server.