Over the past semester, a team of final year students from Curtin University has been collaborating with the BeeWare Project as part of a capstone project for their degrees. Here's a summary of what they've done so far this semester, and what they have planned for the rest of the year.
Curtin Capstone
Capstone is the final year project undertaken by students across all computing disciplines at Curtin University, including Computer Science, Software Engineering, Cyber Security, and Information Technology. It allows students the opportunity to work in teams on real-world projects in collaboration with industry partners, gaining practical experience and professional exposure before graduating.
This year our team has had the exciting opportunity to contribute to BeeWare for our Capstone project.
Meet the Team:
- Kavidu Abeykoon Mudiyanselagedara (kavi2du); Information Technology
- Callum Horton (Stringer90); Software Engineering
- Caydn Lee (caydnn); Software Engineering
- Jaeden Mah (JMah007); Computer Science
- Mitchell Pontague (mEp3ii2); Software Engineering
- Veronica Taniputra (vt37); Cyber Security
What We’ve Worked On
This year, our primary focus has been on improving Toga’s Web backend and enhancing Briefcase’s support for that backend.
Throughout the first semester, our team has been focused on contributing to issues on Briefcase and Toga while working on our research to prepare for what is to come in the following semester. We’ve also worked on implementing several of the Toga Web widgets to enhance functionality on the web backend before working on the web test suite for next semester.
We were first tasked with contributing to a first timer issue before moving on to other more advanced issues.
Briefcase Contributions
- PR #2198: Add boolean question (feature)
- PR #2103: Add XML content escaping filter to cookiecutter.py (feature)
- PR #2199: Add catch exception when deleting JDK (bugfix)
- PR #2229: Accept other changelog name and extension (feature)
- PR #2201: Add --app option to briefcase build/package (feature)
- PR #2214: Add --app option to briefcase create/update (feature)
- PR #2236: Normalise contribution docs with Toga (documentation)
- PR #54: Use XML content escaping filter to Visual Studio template. (bugfix) (work in progress)
Toga Contributions
- PR #3259: Add web screenshots (documentation)
- PR #3466: Fix button click handling in Toga Web backend to correctly trigger event (bugfix)
- PR #3338: DateInput (web widget)
- PR #3405: TimeInput (web widget)
- PR #3362: ScrollContainer (web widget)
- PR #3425: Table (web widget) (work in progress)
- PR #3402: Selection (web widget)
- PR #3527: Slider (web widget)
What We're Working Towards
Now that we’re more familiar with the BeeWare ecosystem, through both our initial PRs and widget implementations, and having concluded our Semester 1 research phase, we’re shifting our focus to larger, more structural improvements for the second half of the project.
Our primary goals moving forward include:
Toga Web Testing
Toga does not currently support testing for the web platform, due to the limitations of WebAssembly and the need for the test suite and testbed app to run in separate threads. To address this, we are working on a general approach that allows the test suite to interact with the web app indirectly, using a mechanism for proxying widget requests into the browser.
To verify the rendered state of the UI, we plan to use Playwright to inspect the browser's DOM and compare it against the expected state. This setup will enable reliable, automated testing of Toga’s web backend.
More technical details and discussion can be found in our Discussion Post on Toga and the associated Issue Ticket.
PyScript Briefcase and Toga Dependencies
During Mitchell’s development of the DateInput Web Widget, we discovered some issues resulting from how PyScript APIs were being used. This issue was resolved separately but sparked broader discussions about the ownership of PyScript, Shoelace, and Bootstrap within the wider BeeWare architecture. Currently, the Briefcase web template includes these directly in index.html
, but they should ideally be managed as dependencies of Toga.
We’re proposing to shift ownership of these dependencies to Toga and other toolkits, enabling them to define their own configurations and inserts while keeping Briefcase focused purely on packaging. This would allow for clearer version control, better modularity, and easier maintenance across the ecosystem. This approach builds on prior work (briefcase#1285, toga#1945 and briefcase-web-static-template#9) and introduces a mechanism for toolkit-managed inserts and configuration. We plan on reviving parts of these to allow for Toga to specify PyScript versioning.
More technical details and discussion can be found in our Discussion Post on Briefcase and the associated Issue Ticket.
Briefcase Web Development Optimisations
While contributing to Toga's web widgets, we noticed that testing even small changes requires rebuilding all project wheels (with briefcase run web -r -u
), which can take a significant amount of time. This makes local development slow and interrupts the feedback loop needed for efficient frontend iteration.
To improve this we're going to be working on extending the dev
command to be platform aware and make it so dev web
utilises editbale installs to serve your project to the brower making it so with simple refresh of the browser you can quickly see your changes instead of waiting for a full wheel rebuild.
More technical details and discussion can be found in our Discussion Post on Briefcase and the associated Issue Ticket.
- Previous entry
- April 2025 Status Update