I'm a QA Software Engineer in Jakarta with 2.5+ years of testing banking, insurance, and enterprise applications: SIT, UAT, regression, API, and performance testing. I've automated with UFT One at work and with Selenium, Serenity BDD, Rest Assured, and Appium in Java, and now I build with Playwright and Bruno in CI.
On the side, I'm Studio Director at Lawak Studio, where I lead small Roblox game projects.
Quality engineering (main career)
- Own QA on projects as the independent tester: test planning, test case design, SIT, UAT, regression, and defect validation, together with development and business teams.
- Test web and mobile applications, test APIs directly, and run performance tests with JMeter.
- Build and maintain test automation: UFT One at work, and Playwright and Bruno in my public suite.
Working alongside AI: Claude Code and GitHub Copilot
I don't hand my testing over to AI. I set up how the agents work with me, and they speed up the repetitive parts:
- I write the rules. Each project gets instructions for the agent: which environments it may touch, which data it may change, how to name test cases, and when it must stop and ask me.
- The test case is the source of truth. An agent may fix a selector or a wait, but it may never change an expected result just to make a test pass. If the app differs from the test case, that's a finding for me to report.
- I review every change. Agents draft test cases, Playwright and Bruno scripts, and run summaries. I read the diff, run the tests, and make the final call.
My Automations Test Preset shows these rules in practice.
Here is my test sample: Lawak Store test demo.
A demo shop with an admin panel, tested by 41 Playwright UI cases and 9 Bruno CLI API cases. Pick a Smoke,
Regression, or Full Cycle run by phase, sprint, and module on the
test dashboard, then open the Word evidence and the
Excel test cases of each run. Sign in to the store with
login@demo.com / Logindemo123.
| Project | What it shows |
|---|---|
| Portfolio test suite | Playwright end-to-end, axe accessibility, and phone-layout tests, plus a Bruno HTTP collection. GitHub Actions runs them on every push, and a failing test blocks the deploy. Reports: Playwright, Bruno. |
| Portfolio | The site under test. Built with Astro, with clean URLs and a recorded run of the smoke test. |
| Automations Test Preset | Setup guides, test case structure, reporting conventions, and agent rules, applied in the Lawak Store demo: one test case source, one run command, and Word, Excel, and dashboard output per run. |
Earlier automation (Alterra Academy QA bootcamp, Java): REST API tests with Serenity BDD and Rest Assured · Android tests with Appium · Pet Adopter capstone, API and web · Web tests with Selenium and Cucumber
A real Playwright run: five smoke-test steps on my portfolio, all passing.
- Automation: Playwright, Bruno, UFT One, Selenium, Serenity BDD, Cucumber, Rest Assured, Appium
- Performance and tools: JMeter, Grafana, Jira, Postman, Swagger, Git, GitHub Actions
- Languages: Java, Python, SQL, Luau (Roblox's Lua)
- AI pair tools: Claude Code, GitHub Copilot
- Game development: Roblox Studio
As Studio Director, I start game ideas, set the direction and the player experience, plan features, and coordinate our programmers, level designers, and 3D artists. I also work hands-on with gameplay systems and UI flow, such as interaction and carry systems. Our games are published under the Lawak Gamehouse community on Roblox:
Community: Lawak Gamehouse on Roblox
