Transcription: OpenAgents Episode 029 - Automating Tests
June 9, 2026 ยท View on GitHub
Source: https://twitter.com/OpenAgentsInc/status/1728590361805672788 Wiki source: https://raw.githubusercontent.com/wiki/OpenAgentsInc/openagents/Video-Series.md Media title: OpenAgents - Episode 029: Automating Tests We configure our test suite to run auto... Upload date: 20231126 Transcription model: mlx-whisper/mlx-community/whisper-tiny Generated at: 2026-06-01T20:34:20Z
Machine-generated transcript. Review speaker labels and wording before using this as quote-grade source material.
[00:00] Christopher David: All right, let's continue toward tests.
[00:07] Christopher David: I started this tweet and I liked it.
[00:09] Christopher David: I feel like programming is 60% developing the right mental model,
[00:14] Christopher David: 40% debugging and testing, 1% rating code,
[00:18] Christopher David: at least when you're solving a novel problem.
[00:20] Christopher David: I don't know how much we're solving novel problems,
[00:23] Christopher David: but yeah, that kind of resonates with me because
[00:28] Christopher David: I've certainly seen that the more we do on passing awesome context
[00:33] Christopher David: to a model call like GPT4,
[00:37] Christopher David: the better context you pass in, this is smarter of a response
[00:40] Christopher David: you'll get passing in like entire issue
[00:45] Christopher David: conversations, you get like really intelligent responses back
[00:50] Christopher David: and we're going to be getting into this 40% of testing now.
[00:57] Christopher David: We need to learn about how to automate this via GitHub action.
[01:02] Christopher David: So to recap over the last eight videos,
[01:11] Christopher David: we've been building a GitHub agent and beyond just coming up with code
[01:18] Christopher David: and making commits and pull requests which we've done.
[01:23] Christopher David: We also want to take advantage of the automation that GitHub enables.
[01:30] Christopher David: I'm kind of new to this so we're going to learn this together.
[01:37] Christopher David: I've never clicked on this before and hey look,
[01:39] Christopher David: Laravel, test a Laravel project.
[01:44] Christopher David: And so the idea that we want to get to here is
[01:50] Christopher David: when a PR is opened,
[01:54] Christopher David: we want the Laravel test suite, all these gorgeous tests that we wrote.
[02:01] Christopher David: Oops.
[02:05] Christopher David: I'm going to find out where that error is.
[02:19] Christopher David: I don't know why it does that.
[02:28] Christopher David: Anyway, we do have a beautiful test suite.
[02:32] Christopher David: What if I run a peer feature?
[02:41] Christopher David: I say we're using the same name needs to be code and comment.
[02:54] Christopher David: Okay, so we do have a beautiful test suite with
[03:01] Christopher David: let's call that fix.
[03:04] Christopher David: Dubakit command name.
[03:09] Christopher David: And one of our tests is taking a long time.
[03:12] Christopher David: We're going to go add that to the integration suite.
[03:17] Christopher David: So we get skipped during most runs.
[03:25] Christopher David: All right, we look like we broke some of these things.
[03:31] Christopher David: We will do this later.
[03:38] Christopher David: So what we want is for the Laravel test suite to run when a PR is open.
[03:59] Christopher David: We want the result of the test to be, you know,
[04:04] Christopher David: shown here and if tests fail,
[04:07] Christopher David: we want the agent to have the opportunity to identify why they fail.
[04:14] Christopher David: Plant testing, so also be added to integration.
[04:22] Christopher David: We want just our fast tests there.
[04:25] Christopher David: Okay, 70 passing tests, move slow tests and integration group.
[04:32] Christopher David: Okay, so let's learn about let's get have actions and test a Larevo project.
[04:42] Christopher David: That is what we want to do.
[04:44] Christopher David: So let's try it.
[04:46] Christopher David: Configure.
[04:47] Christopher David: Ooh.
[04:50] Christopher David: Oh, good.
[04:59] Christopher David: Let's do this.
[05:04] Christopher David: Let's do this.
[05:09] Christopher David: Let's do this.
[05:14] Christopher David: Let's do this.
[05:17] Christopher David: Let's do this.
[05:20] Christopher David: Let's do this.
[05:23] Christopher David: Let's do this.
[05:27] Christopher David: And this will run it on a push to main and a pull request to main.
[05:34] Christopher David: Let me keep it this out for now.
[05:42] Christopher David: Sure.
[05:47] Christopher David: That's weird.
[05:54] Christopher David: Okay.
[05:59] Christopher David: So now we get to see it step through this.
[06:06] Christopher David: Fail.
[06:08] Christopher David: Why did it fail?
[06:10] Christopher David: Your lock file does not contain a compatible set of packages.
[06:18] Christopher David: Please run composer update.
[06:28] Christopher David: Okay.
[06:32] Christopher David: Let's go get our good friend, chatty, GPT is help on this.
[06:46] Christopher David: I am trying to get test running automatically via GitHub actions.
[06:57] Christopher David: When I push to main rich, here is the Larevo.ml file.
[07:09] Christopher David: I'm automatically created by the GitHub suggested workflows thing.
[07:20] Christopher David: But I got this error.
[07:35] Christopher David: I'm going to get the code to compose or update locally.
[08:06] Christopher David: Okay.
[08:15] Christopher David: Oh.
[08:23] Christopher David: That's it.
[08:53] Christopher David: Okay.
[09:23] Christopher David: Thank you.
[09:54] Christopher David: I did that and got the same error.
[10:05] Christopher David: Should we run composer update in the script?
[10:14] Christopher David: Okay.
[10:39] Christopher David: Try clear cache.
[11:03] Christopher David: Okay.
[11:13] Christopher David: You said this.
[11:26] Christopher David: Okay.
[11:36] Christopher David: Okay.
[11:46] Christopher David: Yeah.
[11:53] Christopher David: The clear cache did not work either.
[12:07] Christopher David: Timber barely removed the dash queue fly from war for both output.
[12:25] Christopher David: What?
[12:29] Christopher David: Okay.
[12:39] Christopher David: Okay.
[13:09] Christopher David: Okay.
[13:39] Christopher David: Okay.
[13:50] Christopher David: Ah.
[13:59] Christopher David: Yeah.
[14:19] Christopher David: Try with PHP 8.1.
[14:38] Christopher David: Okay.
[14:48] Christopher David: Okay.
[14:58] Christopher David: Okay.
[15:08] Christopher David: Okay.
[15:23] Christopher David: Okay.
[15:53] Christopher David: Okay.
[16:03] Christopher David: Okay.
[16:15] Christopher David: Okay.
[16:24] Christopher David: Okay.
[16:34] Christopher David: Okay.
[16:39] Christopher David: Okay.
[16:44] Christopher David: Okay.
[16:49] Christopher David: Okay.
[16:59] Christopher David: Okay.
[17:04] Christopher David: Okay.
[17:09] Christopher David: Okay.
[17:14] Christopher David: Okay.
[17:39] Christopher David: Okay.
[18:09] Christopher David: Okay.
[18:27] Christopher David: Okay.
[18:57] Christopher David: Okay.
[19:27] Christopher David: Okay.
[19:55] Christopher David: Okay.
[19:59] Christopher David: all right, let's try this try add postgres
[20:15] Christopher David: add postgres service to Yammer installing the extension could be a pain in the butt I guess
[20:23] Christopher David: I mean the extension might already be present on that image so I'm guessing this uses
[20:28] Christopher David: a darker and I'm just not to experience with that
[20:40] Christopher David: oh it worked past past past oh a bunch of failed
[20:46] Christopher David: nice
[20:52] Christopher David: we manifest not found okay that's solvable
[21:06] Christopher David: a test pass test pass okay
[21:16] Christopher David: where did we put that little code snippet was that in envoyer
[21:36] Christopher David: hook run feet that's right there
[22:36] Christopher David: 18 maybe
[23:36] Christopher David: you
[23:50] Christopher David: building the front of assets
[24:08] Christopher David: here we got farther pass pass pass pass pass pass pass pass pass pass pass failed
[24:18] Christopher David: very test
[24:22] Christopher David: need to be
[24:26] Christopher David: integration test
[24:48] Christopher David: very test
[24:50] Christopher David: integration
[24:54] Christopher David: do the rest
[24:58] Christopher David: to
[25:08] Christopher David: to
[25:18] Christopher David: to
[26:28] Christopher David: to
[26:38] Christopher David: to
[26:48] Christopher David: to
[26:58] Christopher David: to
[27:08] Christopher David: check out
[27:18] Christopher David: test
[27:20] Christopher David: test pass
[27:24] Christopher David: test
[27:30] Christopher David: test
[27:32] Christopher David: call
[27:38] Christopher David: failing test
[27:44] Christopher David: test
[27:48] Christopher David: test
[27:54] Christopher David: test
[27:56] Christopher David: test
[28:00] Christopher David: test
[28:02] Christopher David: test
[28:06] Christopher David: test
[28:10] Christopher David: test
[28:12] Christopher David: test
[28:14] Christopher David: test
[28:17] Christopher David: test
[28:19] Christopher David: test
[28:21] Christopher David: test
[28:27] Christopher David: test
[28:31] Christopher David: test
[28:33] Christopher David: test
[28:35] Christopher David: test
[28:39] Christopher David: test
[28:41] Christopher David: test
[28:44] Christopher David: test
[28:46] Christopher David: test
[28:48] Christopher David: test
[28:50] Christopher David: test
[28:52] Christopher David: test
[28:54] Christopher David: test
[28:56] Christopher David: test
[28:58] Christopher David: test
[29:00] Christopher David: test
[29:02] Christopher David: test
[29:04] Christopher David: test
[29:06] Christopher David: test
[29:08] Christopher David: test
[29:10] Christopher David: test
[29:12] Christopher David: test
[29:14] Christopher David: test
[29:16] Christopher David: test
[29:20] Christopher David: test
[29:24] Christopher David: test
[29:26] Christopher David: test
[29:28] Christopher David: test
[29:30] Christopher David: test
[29:32] Christopher David: test
[29:34] Christopher David: test
[29:36] Christopher David: test
[29:38] Christopher David: test
[29:40] Christopher David: test
[29:42] Christopher David: test
[29:45] Christopher David: test
[29:46] Christopher David: test
[29:48] Christopher David: test
[29:50] Christopher David: test
[29:52] Christopher David: test
[29:54] Christopher David: test
[29:56] Christopher David: test
[29:58] Christopher David: test
[30:00] Christopher David: test
[30:02] Christopher David: test
[30:03] Christopher David: test
[30:04] Christopher David: test
[30:05] Christopher David: test
[30:06] Christopher David: test
[30:08] Christopher David: test
[30:10] Christopher David: test
[30:12] Christopher David: test
[30:14] Christopher David: test
[30:15] Christopher David: test
[30:17] Christopher David: test
[30:19] Christopher David: test
[30:21] Christopher David: test
[30:23] Christopher David: test
[30:25] Christopher David: test
[30:27] Christopher David: test
[30:29] Christopher David: test
[30:31] Christopher David: test
[30:33] Christopher David: test
[30:35] Christopher David: test
[30:36] Christopher David: test
[30:37] Christopher David: test
[30:39] Christopher David: test
[30:41] Christopher David: test
[30:42] Christopher David: test
[30:31] Christopher David: test
[30:31] Christopher David: test
[30:31] Christopher David: test
[30:31] Christopher David: test
[30:43] Christopher David: test
[30:47] Christopher David: test
[30:48] Christopher David: test
[30:49] Christopher David: test
[30:50] Christopher David: test
[30:51] Christopher David: test
[30:52] Christopher David: test
[30:53] Christopher David: test
[30:55] Christopher David: test
[30:56] Christopher David: test
[30:57] Christopher David: test
[30:58] Christopher David: test
[30:59] Christopher David: test
[31:00] Christopher David: test
[31:01] Christopher David: test
[31:02] Christopher David: test
[31:03] Christopher David: test
[31:04] Christopher David: test
[31:05] Christopher David: test
[31:06] Christopher David: test
[31:07] Christopher David: test
[31:08] Christopher David: test
[31:09] Christopher David: test
[31:10] Christopher David: test
[31:11] Christopher David: test
[31:14] Christopher David: test
[31:15] Christopher David: test
[31:16] Christopher David: test
[31:17] Christopher David: test
[31:18] Christopher David: test
[31:19] Christopher David: test
[31:20] Christopher David: test
[31:21] Christopher David: test
[31:22] Christopher David: test
[31:23] Christopher David: test
[31:25] Christopher David: test
[31:26] Christopher David: test
[31:27] Christopher David: test
[31:28] Christopher David: test
[31:29] Christopher David: test
[31:30] Christopher David: test
[31:31] Christopher David: test
[31:32] Christopher David: test
[31:33] Christopher David: test
[31:34] Christopher David: test
[31:35] Christopher David: test
[31:36] Christopher David: test
[31:37] Christopher David: test
[31:38] Christopher David: test
[31:39] Christopher David: test
[31:40] Christopher David: test
[31:41] Christopher David: test
[31:44] Christopher David: test
[31:45] Christopher David: test
[31:46] Christopher David: test
[31:47] Christopher David: test
[31:48] Christopher David: test
[31:49] Christopher David: test
[31:50] Christopher David: test
[31:51] Christopher David: test
[31:52] Christopher David: test
[31:53] Christopher David: test
[31:54] Christopher David: test
[31:55] Christopher David: test
[31:56] Christopher David: test
[31:57] Christopher David: test
[31:58] Christopher David: test
[31:59] Christopher David: test
[32:00] Christopher David: test
[32:01] Christopher David: test
[32:02] Christopher David: test
[32:03] Christopher David: test
[32:04] Christopher David: test
[32:05] Christopher David: test
[32:06] Christopher David: test
[32:07] Christopher David: test
[32:08] Christopher David: test
[32:09] Christopher David: test
[32:10] Christopher David: test
[32:11] Christopher David: test