fix(ui): polish create flows for compose and GitHub repos

Use shared listbox for private-repo selection, align listbox
trigger heights with form inputs, restore compose editor spacing
and full width, and wire loading states on create/continue
actions.
This commit is contained in:
Andras Bacsai
2026-08-07 17:25:50 +02:00
parent 9c0908f0fc
commit c07f66cb5e
6 changed files with 73 additions and 13 deletions
@@ -105,6 +105,32 @@ describe('GitHub Private Repository Component', function () {
->assertSet('selected_repository_id', 1);
});
test('repository selection uses the shared listbox and disables loading action', function () {
fakeGithubHttp([
['id' => 1, 'name' => 'alpha-repo', 'owner' => ['login' => 'testuser']],
]);
Livewire::test(GithubPrivateRepository::class, ['type' => 'private-gh-app'])
->call('loadRepositories', $this->githubApp->id)
->assertSee('id="selected_repository_id-trigger"', false)
->assertSee('wire:loading.attr="disabled"', false)
->assertSee('wire:target="loadBranches,selected_repository_id"', false)
->assertDontSee('<datalist', false);
});
test('continue button uses the shared submit loading indicator', function () {
fakeGithubHttp([
['id' => 1, 'name' => 'alpha-repo', 'owner' => ['login' => 'testuser']],
]);
Livewire::test(GithubPrivateRepository::class, ['type' => 'private-gh-app'])
->call('loadRepositories', $this->githubApp->id)
->set('branches', collect([['name' => 'main']]))
->assertSee('type="submit"', false)
->assertSee('wire:target="submit"', false)
->assertSee('wire:loading.class="is-loading"', false);
});
test('loadRepositories rejects a github app owned by another team', function () {
$victimTeam = Team::factory()->create();
$victimPrivateKey = githubPrivateRepositoryTestPrivateKeyForTeam($victimTeam);