Architecture Decision Record

Active theme: Light

← Misalan rikodin shawara

Rikodin shawarar gine-gine: tsarin sarrafa burauza don gwajin E2E (Playwright ko Selenium)

1. Mahalli

Muna cikin tsarin zaɓar tsarin sarrafa burauza don bututun gwajin ƙarshe-zuwa-ƙarshe (E2E) ɗinmu. Wannan tsari zai zama wani muhimmin ɓangare na tsarin CI/CD ɗinmu, yana gudanar da gwaje-gwajen da ke kwaikwayon mu’amalar masu amfani na zahiri a dandamalinmu. Musamman, gwaje-gwajen za su rufe yanayuka kamar rajista/shigar mai amfani, ɗora fayiloli, mu’amalar dashboard, da zazzage rahotanni.

A matsayin sabuwar kamfani, mai da hankalinmu yana kan ci gaba mai sassauci, tare da buƙatar maimaitawa da haɓaka cikin sauri. Tawagarmu galibi tana aiki da TypeScript da Python, kuma iya rubuta gwaje-gwaje a waɗannan harsuna yana da muhimmanci. Bugu da ƙari, dandamalin yana ɗauke da zane-zane da dashboards masu mu’amala, wanda ya sa yana da muhimmanci kayan aikin sarrafa ya goyi bayan UI masu wadata, masu motsi da kyau.

Masu takara biyu na wannan aiki su ne Playwright da Selenium, kowanne da ƙarfinsa da musanyarsa. Muna buƙatar kimanta waɗannan tsarukan bisa siffofi da buƙatun da aka bayyana a ƙasa.

2. Zaɓuɓɓukan da Aka Yi La’akari

  • Playwright (na Microsoft)
  • Selenium (na Aikin Selenium)

3. Abubuwan da ke Motsa Shawara

Abubuwan da ke tasiri a kan shawararmu su ne kamar haka:

  1. Ci Gaba Mai Sassauci: Kayan aikin da aka zaɓa dole ne ya ba da damar zagayen ci gaba masu sauri, masu sassauci.
  2. Goyon Bayan Harshe: Tawagarmu tana buƙatar goyon baya ga TypeScript da Python duka.
  3. Gwajin UI Mai Mu’amala: Iya gwada zane-zane masu mu’amala, dashboards, da abubuwa masu motsi cikin aminci yana da muhimmanci.
  4. Gudun Lokacin Aiki: Ko da yake ba babban damuwa ba ne, aiki a bututun CI/CD wani abin la’akari ne.
  5. Iya Faɗaɗuwa: Ba ma shirin faɗaɗawa mai yawa nan gaba kaɗan, amma muna son tabbatar da cewa mafita za ta iya ɗaukar girma a nan gaba.
  6. Dacewa da Baya: Tsoffin tsarukan da dacewa da tsoffin burauza ba su da muhimmanci ga aikinmu a wannan lokaci.
  7. Gwajin Wayar Hannu: Ko da yake ba mai da hankali na kai tsaye ba ne, ya kamata tsarin ya iya gwada siffofi masu dacewa da wayar hannu ko ya kasance mai faɗaɗuwa don irin waɗannan amfani.
  8. Gwajin Allo Da Yawa: Goyon baya ga saitunan allo da yawa buƙata ce ta biyu, musamman idan har muka taɓa faɗaɗa zuwa gwajin hanyoyin aiki na masu amfani masu sarƙaƙiya.
  9. Gwajin Ɗora Fayiloli: Dole ne tsarin ya sarrafa ɗora fayiloli yadda ya kamata, babbar buƙata ta buƙatun gwajinmu.

4. Ma’aunin Kimantawa

  • Sauƙin Amfani: Yaya sauƙin rubutawa da kula da gwaje-gwaje?
  • Goyon Bayan Harshe: Shin tsarin yana goyon bayan TypeScript da Python, harsuna biyu da tawagarmu ke amfani da su sosai?
  • Gwajin UI Mai Mu’amala: Yaya tsarin ke sarrafa sarƙaƙƙun mu’amalar masu amfani kamar zane-zane, ɗora fayiloli, da bayanai masu motsi?
  • Haɗewar CI/CD: Yaya tsarin ke haɗewa da kayan aiki da ayyukan CI/CD na yau da kullum?
  • Goyon Bayan Burauza Da Yawa: Waɗanne burauza ake goyon baya kuma yaya suke aiki?
  • Aiki Da Gudu: Yaya sauri gwaje-gwaje ke gudana, musamman a bututun CI/CD?
  • Iya Faɗaɗuwa: Yaya tsarin zai iya faɗaɗuwa idan aka ƙara gwaje-gwaje ko yanayuka masu sarƙaƙiya?
  • Al’umma Da Tsarin Muhalli: Yaya al’ummar tsarin ke aiki? Akwai haɗewa da kari da yawa?

5. La’akari

5.1 Playwright

Fa’idodi:
  1. API Mai Wayo Don Ɗora Fayiloli Na Gida: API ɗin Playwright don mu’amala da fayilolin gida da yin ɗora fayiloli ya fi sauƙi kuma mai fahimta. Wannan zai sauƙaƙa aiwatarwa da kula da gwajin ɗora fayiloli.
  2. Tsarin Rubutu Da Samar Da Lamba: Playwright yana da tsarin rubutu mafi gajarta, mafi taƙaitawa. Wannan yana haifar da ƙarancin lambar boilerplate, wanda ke inganta sauƙin kulawa da ingancin mai haɓakawa. Bugu da ƙari, wannan gajeren tsarin rubutu yana inganta ingancin samar da lamba ta OpenAI, wanda ke sauƙaƙa samar da rubutun gwaji ta atomatik.
  3. Gwajin UI Mai Mu’amala: Playwright ya yi fice wajen gwada aikace-aikacen yanar gizo masu motsi, masu mu’amala, kamar waɗanda ke da zane-zane masu wadata, sarƙaƙƙun mu’amalar masu amfani, da sabuntawa a lokaci-na-gaske. Yana sarrafa WebSockets, WebRTC, shadow DOMs, da sauran fasahohin yanar gizo na zamani sosai.
  4. Goyon Bayan Burauza Da Yawa: Playwright yana goyon bayan Chromium, WebKit, da Firefox. Yana da aiki mai daidaito a waɗannan burauza, wanda ya kamata ya rufe mafi yawan buƙatun gwajinmu.
  5. Haɗewar CI/CD: Playwright yana haɗewa cikin sauƙi da dandamalan CI/CD na zamani (GitHub Actions, Jenkins, da sauransu). Yana iya gudanar da gwaje-gwaje a layi ɗaya a burauza daban-daban, yana inganta lokutan gudanar da gwaji kuma ya sa ya dace da ci gaba cikin sauri.
  6. Mai Sauri Kuma Amintacce: Playwright ya fi Selenium sauri gabaɗaya, musamman a yanayin headless, kuma ya fi juriya wajen mu’amala da abubuwan yanar gizo marasa daidaitawa.
Rashin Fa’idodi:
  1. Iyakantaccen Gwajin Wayar Hannu: Ko da yake Playwright yana goyon bayan kwaikwayon wayar hannu don burauza, ba shi da iyawar gwajin wayar hannu ta asali kamar haɗewar Selenium da Appium don gwajin wayar hannu na gaske.
  2. Ƙaramin Tsarin Muhalli: Playwright har yanzu sabo ne kuma bai kafu ba kamar Selenium. Ko da yake yana da al’umma mai saurin girma da kyawawan takardu, wataƙila bai riga ya sami faffadan tsarin muhalli na plugins da haɗewa da Selenium ke bayarwa ba.
  3. Iyakantaccen Goyon Bayan Burauza: Ko da yake Playwright yana rufe manyan burauza na zamani (Chrome, Safari, Firefox), goyon bayansa ga tsoffin burauza (misali, Internet Explorer) bai kai na Selenium ƙarfi ba.

5.2 Selenium

Fa’idodi:
  1. Tsawon Tarihi Da Balaga: Selenium ya daɗe yana nan kuma yana da tabbataccen tarihin aiki. Ana amfani da shi sosai a tawagogi da masana’antu da yawa, wanda ya haifar da faffadan tsarin muhalli na plugins, haɗewa, da albarkatu.
  2. Goyon Bayan Burauza Da Dandamali Da Yawa: Selenium yana goyon bayan burauza da sigogi iri-iri, ciki har da Internet Explorer, kuma ana iya haɗa shi da kayan aiki daban-daban kamar Docker, Selenium Grid, da sabis na girgije don gwajin rarrabawa.
  3. Gwajin Wayar Hannu: Selenium, ta hanyar haɗewarsa da Appium, ya fi ƙarfi sosai don gwajin wayar hannu, ciki har da aikace-aikacen Android da iOS. Wannan ya sa ya zama mafi kyawun zaɓi ga ayyukan da suka mai da hankali kan wayar hannu ko suna da yawan wayar hannu.
  4. Gwajin Allo Da Yawa: Selenium yana ba da mafi kyawun goyon baya ga yanayuka da suka haɗa da allo da yawa ko sarƙaƙƙun mu’amalar tagogi da yawa.
Rashin Fa’idodi:
  1. Sarƙaƙiya: API ɗin Selenium ya fi tsayi kuma a bayyane. Ko da yake wannan na iya zama fa’ida a wasu lokuta, yana nufin ƙarin lambar da za a rubuta da kula, wanda zai iya rage sassaucin mai haɓakawa—musamman muhimmi a muhallin sabuwar kamfani.
  2. Aiki: Selenium gabaɗaya yana gudana a hankali fiye da Playwright, musamman a yanayin headless. Wannan zai iya shafar bututun CI/CD, musamman yayin da adadin gwaje-gwaje ke girma.
  3. Gwajin UI Mai Mu’amala: Selenium ba shi da santsi kamar Playwright wajen gwada UI na yanar gizo na zamani, masu mu’amala, musamman da zane-zane da sabuntawar bayanai a lokaci-na-gaske. Yana buƙatar ƙarin saiti da sarrafawa don mu’amala da abun ciki mai motsi cikin aminci.

6. Taƙaitaccen Kwatance

Siffa Playwright Selenium
Sauƙin Amfani Gajeren tsarin rubutu, mafi fahimta ga UI na zamani Ya fi bayyane, yana buƙatar ƙarin boilerplate
Goyon Bayan Harshe TypeScript, Python, JavaScript TypeScript, Python, Java, Ruby, C#
Gwajin UI Mai Mu’amala Mai kyau sosai ga UI masu motsi, na lokaci-na-gaske Yana sarrafa UI na asali, amma ya fi tsayi da sarƙaƙiya ga mu’amala masu wadata
Gwajin Ɗora Fayiloli API mai wayo don ɗora fayiloli Ya fi tsayi, API maras fahimta sosai
Haɗewar CI/CD Sauƙin haɗewa da GitHub Actions, Jenkins Ƙarfin haɗewa da kayan aikin CI da yawa
Gwajin Wayar Hannu Iyakantacce, kwaikwayo kawai Cikakken goyon baya ta Appium
Goyon Bayan Burauza Da Yawa Chromium, WebKit, Firefox Cikakken goyon baya a manyan burauza da tsofaffi
Aiki Mai sauri, an inganta shi don gwajin headless Ya fi jinkiri, musamman a yanayin headless
Gwajin Allo Da Yawa Iyakantacce Kyakkyawan goyon baya ga saitunan allo da yawa
Al’umma Da Tsarin Muhalli Yana girma, kyawawan takardu Babba, balagagge, faffadan tsarin muhalli

7. Shawara

Bayan la’akari da buƙatu da musanyar, Playwright shi ne mafi kyawun zaɓi ga buƙatunmu na yanzu. API ɗinsa mai wayo don gwajin ɗora fayilolin gida, taƙaitaccen tsarin rubutunsa, da ƙarfin goyon bayansa ga gwajin UI mai mu’amala sun sa ya dace da zagayen ci gabanmu mai sassauci. Gaskiyar cewa yana goyon bayan TypeScript da Python duka yana da muhimmanci ga tawagarmu, kuma hanyar zamani ta tsarin ga gwaji za ta ba mu damar rubuta lamba mai tsabta, mai sauƙin kulawa.

Ko da yake Selenium ya kasance kayan aiki mai kyau, musamman don gwajin wayar hannu, goyon bayan tsoffin burauza, da saitunan allo da yawa, bai dace sosai da buƙatunmu na yanzu ba. Tsawonsa, jinkirin aikinsa, da sarrafa UI masu motsi kamar zane-zane cikin sarƙaƙiya ya sa ya zama maras kyau ga amfaninmu.

8. Sakamako

  • Aiki Nan Take: Za mu karɓi Playwright don gwajin E2E ɗinmu, muna mai da hankali kan gwada hanyoyin masu amfani da suka haɗa da rajista, shiga, ɗora fayiloli, dashboards, da zazzage rahotanni.
  • La’akari Na Dogon Lokaci: Za mu sa ido kan tsarin muhallin Playwright mai haɓaka. Idan buƙatunmu suka canza, musamman game da gwajin wayar hannu ko goyon bayan tsoffin burauza, za mu iya sake duba Selenium.
  • Horo Da Takardu: Tawagogin ci gaba za su buƙaci saba da API ɗin Playwright, musamman don sarrafa UI masu motsi da ɗora fayiloli.
  • Komawa: Za a mayar da gwaje-gwajen Selenium da ke akwai (idan akwai) zuwa Playwright a hankali.

9. La’akari Na Gaba