Získejte informace o prohlížeči s Intern

Víte, jak si nemůžete vzpomenout na něco, co váš manžel považuje za opravdu důležité, ale vy si pamatujete každou vtipnou větu z filmu, který jste viděli, když vám bylo 17? Tak se cítím po měsících psaní testů selenu pomocí Intern frameworku – zapomněl jsem spoustu důležitých věcí na front-endu, ale odhalil jsem spoustu problémů se selenem a technik, jak je obejít.

Nejprve jsem své testy psal pomocí Firefoxu jako testovacího prohlížeče. Poté jsem otevřel své testování v prohlížeči Chrome a potřeboval jsem upravit spoustu věcí, protože Chrome spolehlivě nedělá věci jako Firefox, jako je prvek „kliknutí“ vs. stisknutí klávesy „enter“. A neptejte se mě na problémy se souběžností. Dnes mě napadlo přidat do mixu Safari. Jedním slovem....f*ck. Objevil se zcela nový svět problémů.

Jeden problém, který má Selenium + Safari (jeden z desítek), jsou problémy s historií / URL. Po spoustě výzkumu a implementaci každého hacku, který mě napadl, jsem měl tento okamžik:

Pokud se v daném prohlížeči vyskytne problém se selenem, který znemožňuje správné dokončení testu, nemá smysl s ním bojovat – tento případ vyžaduje pouhé úspěšné absolvování testu místo otravování, když vidíte selhání kvůli chybě Selenium . Jak ale získáte informace o prohlížeči v rámci testu?


// From within a test function
console.log(this.remote.session.capabilities);

{
  'webdriver.remote.sessionid': 'f4dffffc-8d40-4e21-a862-459109ffabfc',
  browserName: 'safari',
  takesScreenshot: true,
  javascriptEnabled: true,
  version: '8.0.8',
  cssSelectorsEnabled: true,
  platform: 'MAC',
  secureSsl: true,
  remoteFiles: true,
  nativeEvents: false,
  rotatable: false,
  locationContextEnabled: false,
  webStorageEnabled: false,
  applicationCacheEnabled: false,
  supportsNavigationDataUris: true,
  supportsCssTransforms: true,
  supportsExecuteAsync: true,
  mouseEnabled: true,
  touchEnabled: false,
  dynamicViewport: true,
  shortcutKey: '',
  brokenDeleteCookie: false,
  brokenExecuteElementReturn: false,
  brokenExecuteUndefinedReturn: false,
  brokenElementDisplayedOpacity: false,
  brokenElementDisplayedOffscreen: false,
  brokenSubmitElement: true,
  brokenWindowSwitch: true,
  brokenDoubleClick: false,
  brokenCssTransformedSize: true,
  fixedLogTypes: false,
  brokenHtmlTagName: false,
  brokenNullGetSpecAttribute: false,
  brokenNavigation: true,
  brokenMouseEvents: true,
  brokenWindowPosition: true,
  brokenSendKeys: true,
  brokenCookies: true 
}

Objekt relace na dálkovém ovládání poskytuje informace o relaci prohlížeče, včetně názvu (nejdůležitějšího) a také oprav poskytnutých Intern.

V ideálním světě můžete všechny své testy Selenium psát v jednom formátu a funguje to v každém prohlížeči....ale nežijeme v ideálním světě, stejně jako potřebujeme hacky prohlížeče v JavaScriptu na straně klienta. Možnost získat název prohlížeče a další informace v rámci testu je však jen další super užitečná informace, kterou Intern odhalil!