Upgrade to Pro — share decks privately, control downloads, hide ads and more …

e2e-engine-swingを作った #phpmatsuri

e2e-engine-swingを作った #phpmatsuri

tester-army/e2e https://github.com/tester-army/e2e のためのswing engine を作った https://github.com/77web/e2e-engine-swing

Avatar for Hiromi Hishida

Hiromi Hishida

November 08, 2026

More Decks by Hiromi Hishida

Other Decks in Programming

Transcript

  1. Java GUI on swing • Good • コアなのでサードパーティ依存要らない • クロスプラットフォームビルドできる

    • Bad • 古い • 実装がまわりくどくて色々めんどくさい • e2eテストができない(方法が提供されていない)
  2. e2eテスト test('adds todos...', async ({ screen }) => { await

    screen.getByRole('tab', 'Todos').tap(); await expect(screen.getByRole('tab', 'Todos')).toBeSelected(); await screen.getByTestId('todo-input').fill('Buy milk'); await screen.getByTestId('todo-add').tap(); await expect(screen.getByTestId('todo-count')).toHaveText('1 item'); await expect(screen.getByRole('option')).toHaveCount(1); await screen.getByTestId('todo-input').fill('Buy egg'); await screen.getByTestId('todo-input').press('Enter'); await expect(screen.getByTestId('todo-count')).toHaveText('2 items'); await expect(screen.getByRole('option')).toHaveCount(2); await expect(screen.getByRole('option').nth(0)).toHaveAccessibleName('Buy milk'); await expect(screen.getByRole('option').nth(1)).toHaveAccessibleName('Buy egg'); // ... });