Skip to content
Merged
Changes from 6 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
102 changes: 102 additions & 0 deletions content/news/buzz/2025-curtin-capstone-semester-end-blog/contents.lr
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
title: 2025 Curtin University Capstone Project
---
author: Curtin Capstone Team
---
body:

Over the past semester, a team of final year students from [Curtin University](https://www.curtin.edu.au) 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
- Discipline: Information Technology
- GitHub: [kavi2du](https://github.com/kavi2du)
Comment thread
kavi2du marked this conversation as resolved.
Outdated
- Callum Horton
- Discipline: Software Engineering
- GitHub: [Stringer90](https://github.com/Stringer90)
- Caydn Lee
- Discipline: Software Engineering
- GitHub: [caydnn](https://github.com/caydnn)
- Jaeden Mah
- Discipline: Computer Science
- GitHub: [JMah007](https://github.com/JMah007)
- Mitchell Pontague
- Discipline: Software Engineering
- GitHub: [mEp3ii2](https://github.com/mEp3ii2)
- Veronica Taniputra
- Discipline: Cyber Security
- GitHub: [vt37](https://github.com/vt37)

## What We’ve Worked On

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.
Comment thread
kavi2du marked this conversation as resolved.

We were first tasked with contributing to a first timer issue before moving on to other more advanced issues.

### Briefcase Contributions

- PR [#2198](https://github.com/beeware/briefcase/pull/2198): Add boolean question (feature)
- PR [#2103](https://github.com/beeware/briefcase/pull/2203): Add XML content escaping filter to cookiecutter.py (feature)
- PR [#2199](https://github.com/beeware/briefcase/pull/2199): Add catch exception when deleting JDK (bugfix)
- PR [#2229](https://github.com/beeware/briefcase/pull/2229): Accept other changelog name and extension (feature)
- PR [#2201](https://github.com/beeware/briefcase/pull/2201): Add --app option to briefcase build/package (feature)
- PR [#2214](https://github.com/beeware/briefcase/pull/2214): Add --app option to briefcase create/update (feature)
Comment thread
freakboy3742 marked this conversation as resolved.
Outdated
- PR [#2236](https://github.com/beeware/briefcase/pull/2236): Normalise contribution docs with Toga (documentation)
- PR [#54](https://github.com/beeware/briefcase-windows-VisualStudio-template/pull/54): Use XML content escaping filter to Visual Studio template. (bugfix) (work in progress)

### Toga Contributions

- PR [#3259](https://github.com/beeware/toga/pull/3259): Add web screenshots (documentation)
- PR [#3466](https://github.com/beeware/toga/pull/3466): Fix button click handling in Toga Web backend to correctly trigger event (bugfix)

### Web Widgets
Comment thread
kavi2du marked this conversation as resolved.
Outdated
Comment thread
kavi2du marked this conversation as resolved.
Outdated

- PR [#3338](https://github.com/beeware/toga/pull/3338): Date Input
- PR [#3405](https://github.com/beeware/toga/pull/3405): TimeInput
- PR [#3362](https://github.com/beeware/toga/pull/3362): ScrollContainer
- PR [#3425](https://github.com/beeware/toga/pull/3425): Table (work in progress)
- PR [#3402](https://github.com/beeware/toga/pull/3402): Selection
- PR [#3527](https://github.com/beeware/toga/pull/3527): Slider

## 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.
Comment thread
mEp3ii2 marked this conversation as resolved.
Outdated

Our primary goals moving forward include:

### Toga Web Testing
Comment thread
kavi2du marked this conversation as resolved.

Toga does not currently support testing for the web platform. This is because when Toga runs tests for the other platforms, it starts a testbed application with the Pytest test suite running as a thread. Additionally, since the testbed app and test suite are running in the same process, they share the same memory space. The test suite is built assuming this is the case as it creates Toga objects, then adds them directly to the testbed app, later modifying them at the API level to then test that the platform being tested has rendered the changes as expected.

This cannot happen with Toga web apps, as they do not support multithreading due to WebAssembly only running single-threaded. Therefore, we have to find a way for the test suite to run correctly when it is running in its own process, separate from the testbed app. Our goals are to prove-out a general approach that will allow this to occur, which will include proof-of-concepts that show it is feasible and provide some initial specifications and guidelines for future pieces of work.

Our current idea is to ‘replace’ any Toga objects created in the test suite with proxy objects, which will act as a ‘wrapper’ around its counterpart in the remote testbed app. This will involve remotely creating the object in the testbed app and forwarding commands to modify its attributes and retrieve data from it. This will allow the testbed app to render any changes the test suite is expecting so that the test suite can test the web app at the API as well as the platform level.
Comment thread
mEp3ii2 marked this conversation as resolved.
Outdated

Speaking of testing the testbed app at the platform level, we need a way for the test suite to test that any modifications at the API level are correctly rendered in-app. This is where Playwright will come in. Playwright allows us to inspect the testbed web app at the DOM level and verify that its state matches the expectations of the test suite.

Lastly, we want to have a look at how Briefcase could run the testbed app and the Pytest test suite as two separate processes, while still allowing the collection and reporting of test suite results and code coverage results.

For more information, the discussion leading up to this point can be found in our [Discussion Post on Toga](https://github.com/beeware/toga/discussions/3440). The corresponding ticket to this part of our capstone project can be found in our [Issue Ticket](https://github.com/beeware/toga/issues/3545).

### PyScript Briefcase and Toga Dependencies

During Mitchell’s development of the DateInput Web Widget, we discovered some issues resulting from create_proxy. This issue was resolved separately, but led to discussions regarding ownership of Pyscript, as well as Shoelace and Bootstrap, within the wider Beeware architecture. Currently, the Briefcase Web Template inserts these into index.html, although these should be dependencies of Toga.
Comment thread
kavi2du marked this conversation as resolved.
Outdated

Russell has previously attempted this in the pull requests [https://github.com/beeware/briefcase/pull/1285](https://github.com/beeware/briefcase/pull/1285), [https://github.com/beeware/toga/pull/1945](https://github.com/beeware/toga/pull/1945) and [https://github.com/beeware/briefcase-web-static-template/pull/9](https://github.com/beeware/briefcase-web-static-template/pull/9). Currently, we plan on reviving parts of these to allow for Toga to specify PyScript versioning. Discussion is ongoing regarding decoupling PyScript from Briefcase and handling multiple dependencies.
Comment thread
mEp3ii2 marked this conversation as resolved.
Outdated

More details can be found in our [Discussion Post on Briefcase.](https://github.com/beeware/briefcase/discussions/2283)

### Briefcase Web Development Optimisations

While contributing to Toga's web widgets, we noticied that testing even small changes requires rrebuilding all project wheels(`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 eddigient frontend iteration.
Comment thread
mEp3ii2 marked this conversation as resolved.
Outdated

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. To following along with our work next semster check out our ticket [#2334](https://github.com/beeware/briefcase/issues/2334)

---
pub_date: 2025-06-13