mcpField
P
protractor-skill

protractor-skill

github.com/lambdatestテスト・品質384200 回インストール2 週間前に更新
リポジトリ

protractor-skill について

既存の Protractor テストを保守するチーム向けに、ブラウザテストの作成と実行方法をまとめたスキルです。Angular のロケーター、ページオブジェクト、クラウド実行、Playwright への移行を扱います。Protractor は 2023 年にサポート終了しています。

主な機能

  1. 01Angular 専用ロケーターパターン
  2. 02ページオブジェクトの例
  3. 03Protractor 設定ガイド
  4. 04TestMu AI でのクラウド実行
  5. 05Playwright 移行対応表

活用シーン

  1. 01既存 Protractor テストの保守
  2. 02Angular ページ要素の特定
  3. 03TestMu AI でのテスト実行
  4. 04Playwright への移行計画

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/lambdatest/agent-skills --skill protractor-skill

インストール後、Claude Code で/protractor-skillを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

reference/
advanced-patterns.md
cloud-integration.md
playbook.md

詳細

Protractor 自動化スキル(非推奨)

Protractor は 2023 年にサポートを終了しました。 Angular チームは Playwright または Cypress を推奨しています。

TestMu AI クラウド実行については、reference/cloud-integration.md と shared/testmu-cloud-reference.md を参照してください。

コアパターン

基本的なテスト
describe('Login', () => {
  beforeEach(async () => {
    await browser.get('/login');
  });

  it('should login with valid credentials', async () => {
    await element(by.model('email')).sendKeys('[email protected]');
    await element(by.model('password')).sendKeys('password123');
    await element(by.css('button[type="submit"]')).click();
    expect(await browser.getCurrentUrl()).toContain('/dashboard');
    expect(await element(by.css('.welcome')).getText()).toContain('Welcome');
  });

  it('should show error for invalid credentials', async () => {
    await element(by.model('email')).sendKeys('[email protected]');
    await element(by.model('password')).sendKeys('wrong');
    await element(by.css('button[type="submit"]')).click();
    expect(await element(by.css('.error')).isDisplayed()).toBe(true);
  });
});
Angular 固有のロケーター
element(by.model('ctrl.email'));                      // ng-model
element(by.binding('ctrl.username'));                  // Angular binding
element(by.exactBinding('ctrl.name'));                // Exact binding
element(by.repeater('item in items'));                // ng-repeat
element.all(by.repeater('item in items')).count();   // Count repeater
element(by.cssContainingText('.item', 'Active'));     // CSS + text
element(by.buttonText('Submit'));                      // Button text
element(by.partialButtonText('Sub'));                  // Partial text
ページオブジェクト
class LoginPage {
  constructor() {
    this.emailInput = element(by.model('email'));
    this.passwordInput = element(by.model('password'));
    this.loginButton = element(by.css('button[type="submit"]'));
    this.errorMessage = element(by.css('.error'));
  }

  async login(email, password) {
    await this.emailInput.sendKeys(email);
    await this.passwordInput.sendKeys(password);
    await this.loginButton.click();
  }
}

// Usage
const loginPage = new LoginPage();
await loginPage.login('[email protected]', 'password123');
protractor.conf.js
exports.config = {
  framework: 'jasmine',
  seleniumAddress: 'http://localhost:4444/wd/hub',
  specs: ['specs/**/*.spec.js'],
  capabilities: { browserName: 'chrome' },
  jasmineNodeOpts: { defaultTimeoutInterval: 30000 },
  onPrepare: () => {
    browser.waitForAngularEnabled(true);
  }
};
移行ガイド
ProtractorPlaywright
element(by.model('x'))page.locator('[ng-model="x"]')
element(by.css('#id'))page.locator('#id')
browser.get(url)page.goto(url)
element.sendKeys(text)locator.fill(text)
browser.sleep(ms)page.waitForTimeout(ms)
browser.waitForAngular()不要(自動待機)
TestMu AI でのクラウド実行

環境変数を設定します:LT_USERNAME、LT_ACCESS_KEY

// conf.js
exports.config = {
  seleniumAddress: `https://${process.env.LT_USERNAME}:${process.env.LT_ACCESS_KEY}@hub.lambdatest.com/wd/hub`,
  capabilities: {
    browserName: 'chrome',
    'LT:Options': {
      user: process.env.LT_USERNAME,
      accessKey: process.env.LT_ACCESS_KEY,
      build: 'Protractor Build',
      name: 'Protractor Test',
      platformName: 'Windows 11',
      video: true,
      console: true,
      network: true,
    },
  },
};

実行:npx protractor conf.js(非推奨。代わりに Playwright/Cypress を使用してください)

詳細なパターン

高度なパターン、デバッグガイド、CI/CD 統合、ベストプラクティスについては、 reference/playbook.md を参照してください。

コメント