Launch HN: CamelQA (YC W24) – AI that tests mobile apps
Flaky UI tests suck. We want to create a solution where engineers don’t waste time maintaining fragile scripts.
camelQA uses a combination of accessibility element data along with an in-house custom vision-only RCNN object detection model paired with Google Siglip for UI element classification (see a sample output here - https://camelqa.com/blog/sole-ui-element-detector.png). This way we’re able to detect elements even if they do not have accessibility elements associated with them.
Under the hood the agent is using Appium to interface with the device. We use GPT-4V to reason at a high level and GPT-3.5 to execute the high-level actions. Check out a gif of our playground here (https://camelqa.com/blog/sole-signup.gif)
Since we’re vision based, we don’t need access to your source code and we work across all app types - SwiftUI and UIKit, React Native, Flutter.
We built a demo for HN where you can use our model to control Wikipedia on a simulated iPhone. Check that out here (https://demo.camelqa.com/). Try giving it a task like “Bookmark the wiki page for Ilya Sutskever“ or “Find San Francisco in the Places tab”. We only have 5 simulators running so there may be a wait. You get 5 minutes once you enter your first command.
If you want to see what our front end looks like, we made an account with some test runs. Use this login (Username: hackerNews Password: 1337hackerNews!) to view our sandboxed HN account (https://dash.camelqa.com/login).
Last year we left our corporate jobs to build in the AI space. It felt like we were endlessly testing our apps, even for minor updates, and we still shipped a bug that caused one of our apps to crash on subscribe (the app in question - https://apps.apple.com/us/app/tldr-ai-summarizer/id644930471...). That was the catalyst for camelQA.
We’re excited to hear what you all think!
54 comments
[ 2.3 ms ] story [ 114 ms ] threadThe demo.camelqa needs some styling. I would invest a few minutes here. Maybe a loading spinner too if you're expecting 15second latency.
Technically is this doing clever things with markup, or literally just feeding the image into a multimodal LLM and getting function calls in response?
Was one thing I never got around to testing with DemoTime but was always curious about.
Anyway sorry this is a nice product. Congratulations on the launch.
Always good to see substantial tech
"You said the play button was at 100, 200 and a green circle is drawn there. Is the circle located on the button or do you need to adjust it"
Something along those lines. And it also got the size of the image.
Nope its in the right ballpark but it could not make fine adjustments or anything closer to a button.
I have a few questions:
As with all new AI-based RPA & Testing frameworks (there are quite many in YC), I'm curious about the costs and performance. Let's say I want to run a few smoke tests (5-10 end-to-end scenarios) on my app across multiple iOS and Android devices with different screen sizes and OS versions before going into production.
What would it cost, and how long would it take to complete the tests?
Do you already have customers running such real-world use cases with it?
Overall I'm a bit skeptical because most UI tests are pretty easy to write today with very natural DSLs that are close to natural language, but definitely want to follow and hear more production use cases.
Interesting, what do you cache? How do you know if 1 change needs to be rerun versus another?
>Flakiness is from personal experience automating UI tests specifically and having them break when a new nondeterministic popup modal is added or another engineer breaks an identifier/locator strategy
A modal popping up isn't a flake though, it's often when a button is on screen but the test runner can't seem to find it due to run-loop issues or emulator/simulator issues. If a modal pops up on the screen in a test, how does CamelQA resolve this and how would it know if it's an actual regression or not? If a modal pops up on a screen at the wrong time that _could_ be a real regression, versus a developer forgetting to configure some local state.
2. You can define acceptance criteria in natural language with camel.
Wouldn't it be a better/cheaper/faster solution to use LLMs to write UI/integration tests?
I'm glad to see more vision-first, AI-powered testing tools in the world.
Detox from Wix for React Native Apps is pretty good.
How far off being able to integrate into a CICD pipe is this? I'd love if this could trigger off a pr, then block merging since it wasn't sure how to execute some regular user flow (even if that were due to it not understanding how it could perform an action, since this maybe means my flow doesn't make sense).
Curious how using GPT and vision combats flakiness? I'd feel the entropy of GPT and anything less than 100% accuracy in the computer vision pieces would lead to more flakiness.
I also wonder about the speed and costs of running the tests. When E2E tests are traditionally slow and expensive already. The computer vision and GPT elements seem costlier and less fast.
The upside is that we do prompt hacking on our end to break out of loops and heal after it's made a mistake. Having said that, we're working on improving this!
On costs, it's cheaper than you think. The entire playground demo cost us less than $10. More expensive than running a script but we believe the cost of intelligence will go down in time.
On speed, yes it is slow. We minimize this by parallelizing tests across devices on our device farm. We can normally turn results around in 2.5-4 hours depending on the number of tests.
Thanks for the questions!
> it isn't AI
Hmm, why? I understand "AI" is an incredibly broad term, and there are maybe some fundamental differences between how App Quality Copilot and CamelQA work (I tried neither), but from looking at App Quality Copilot's website, it sure looks like "AI".
[0]: https://blog.mobile.dev/maestro-re-building-the-ios-driver-6...
I wonder if you can easily add AI-based fuzzing or AI-based sample workflows to a testing pipeline.
In addition to pass/fail, I can see it even leaving some comments about ease-of-use. There's a lot of value here!
I'm reminded of Waldo, a mobile testing automation product that was acquired in 2023.
Their mascot is another camelid (not sure if alpaca or llama). https://www.waldo.com/
Tracking competitive apps would be an interesting use case for automation. One of our partners at YC asked up to use camel to automatically refresh the waitlist for a tesla cyber truck lol.