OCR சோதனை சேவை
@wdio/ocr-service என்பது ஒரு மூன்றாம் தரப்பு தொகுப்பு, மேலும் தகவலுக்கு தயவுசெய்து GitHub | npm ஐப் பார்க்கவும்
WebdriverIO உடன் காட்சி சோதனை பற்றி ய ஆவணங்களுக்கு, தயவுசெய்து docs ஐப் பார்க்கவும். இந்த திட்டம் WebdriverIO உடன் காட்சி சோதனைகளை இயக்குவதற்கான அனைத்து தொடர்புடைய தொகுதிகளையும் கொண்டுள்ளது. ./packages அடைவில் நீங்கள் பின்வருவனவற்றைக் காணலாம்:
@wdio/visual-testing: காட்சி சோதனையை ஒருங்கிணைப்பதற்கான WebdriverIO சேவைwebdriver-image-comparison: WebDriver நெறிமுறையை ஆதரிக்கும் வெவ்வேறு NodeJS சோதனை தானியக்க கட்டமைப்புகளுக்குப் பயன்படுத்தக்கூடிய படம் ஒப்பிடும் தொகுதி
Storybook ரன்னர் (BETA)
Storybook ரன்னர் BETA பற்றிய மேலும் ஆவணங்களைக் காண கிளிக் செய்யவும்
Storybook ரன்னர் இன்னும் BETA நிலையில் உள்ளது, ஆவணங்கள் பின்னர் WebdriverIO ஆவணப்பக்கங்களுக்கு மாற்றப்படும்.
இந்த தொகுதி இப்போது ஒரு புதிய விஷுவல் ரன்னருடன் Storybook ஐ ஆதரிக்கிறது. இந்த ரன்னர் உள்ளூர்/தொலைநிலை storybook நிகழ்நிலையை தானாகவே ஸ்கேன் செய்து, ஒவ்வொரு கூறுகளின் உறுப்பு ஸ்கிரீன்ஷாட்களை உருவாக்கும். இதை
export const config: WebdriverIO.Config = {
// ...
services: ["visual"],
// ....
};
உங்கள் services இல் சேர்ப்பதன் மூலமும், npx wdio tests/configs/wdio.local.desktop.storybook.conf.ts --storybook கட்டளை வரியில் இயக்குவதன் மூலமும் செய்யலாம்.
இது இயல்புநிலை உலாவியாக headless முறையில் Chrome ஐப் பயன்படுத்தும்.
[!NOTE]
- விஷுவல் டெஸ்டிங் விருப்பங்களில் பெரும்பாலானவை Storybook ரன்னருக்கும் செயல்படும், WebdriverIO ஆவணத்தைப் பார்க்கவும்.
- Storybook ரன்னர் உங்கள் அனைத்து திறன்களையும் மேலெழுதும், மேலும் இது ஆதரிக்கும் உலாவிகளில் மட்டுமே இயங்கும்,
--browsersஐப் பார்க்கவும்.- Storybook ரன்னர் Multiremote திறன்களைப் பயன்படுத்தும் இருக்கும் உள்ளமைவை ஆதரிக்காது மற்றும் பிழையை வீசும்.
- Storybook ரன்னர் மொபைல் வெப் அல்ல, டெஸ்க்டாப் வெப் மட்டுமே ஆதரிக்கிறது.
Storybook ரன்னர் சேவை விருப்பங்கள்
சேவை விருப்பங்களை இவ்வாறு வழங்கலாம்
export const config: WebdriverIO.Config = {
// ...
services: [
[
'visual',
{
// சில இயல்புநிலை விருப்பங்கள்
baselineFolder: join(process.cwd(), './__snapshots__/'),
debug: true,
// storybook விருப்பங்கள், விளக்கத்திற்கு cli விருப்பங்களைப் பார்க்கவும்
storybook: {
additionalSearchParams: new URLSearchParams({foo: 'bar', abc: 'def'}),
clip: false,
clipSelector: ''#some-id,
numShards: 4,
// `skipStories` ஒரு சரம் ('example-button--secondary'),
// ஒரு வரிசை (['example-button--secondary', 'example-button--small'])
// அல்லது ஒரு regex ஆக இருக்கலாம், இது ஒரு சரமாக வழங்கப்பட வேண்டும் ("/.*button.*/gm")
skipStories: ['example-button--secondary', 'example-button--small'],
url: 'https://www.bbc.co.uk/iplayer/storybook/',
version: 6,
// விருப்பம் - அடிப்படை பாதைகளை மேலெழுத அனுமதிக்கிறது. இயல்பாக இது வகை மற்றும் கூறுபடி அடிப்படை பாதையை குழுவாக்கும் (எ.கா. forms/input/baseline.png)
getStoriesBaselinePath: (category, component) => `path__${category}__${component}`,
},
},
],
],
// ....
}
Storybook ரன்னர் CLI விருப்பங்கள்
--additionalSearchParams
- வகை:
string - கட்டாயம்: இல்லை
- இயல்புநிலை: ''
- எடுத்துக்காட்டு:
npx wdio tests/configs/wdio.local.desktop.storybook.conf.ts --storybook --additionalSearchParams="foo=bar&abc=def"
இது Storybook URL க்கு கூடுதல் தேடல் அளவுருக்களைச் சேர்க்கும். மேலும் தகவலுக்கு URLSearchParams ஆவணத்தைப் பார்க்கவும். சரம் செல்லுபடியாகும் URLSearchParams சரமாக இருக்க வேண்டும்.
[!NOTE]
&ஐ கட்டளை பிரிப்பானாக விளக்கப்படுவதைத் தடுக்க இரட்டை மேற்கோள ்கள் தேவை. எடுத்துக்காட்டாக,--additionalSearchParams="foo=bar&abc=def"உடன் அது பின்வரும் Storybook URL ஐ கதைகள் சோதனைக்கு உருவாக்கும்:http://storybook.url/iframe.html?id=story-id&foo=bar&abc=def.
--browsers
- வகை:
string - கட்டாயம்: இல்லை
- இயல்புநிலை:
chrome, நீங்கள்chrome|firefox|edge|safariஇலிருந்து தேர்ந்தெடுக்கலாம் - எடுத்துக்காட்டு:
npx wdio tests/configs/wdio.local.desktop.storybook.conf.ts --storybook --browsers=chrome,firefox,edge,safari - குறிப்பு: CLI மூலம் மட்டுமே கிடைக்கும்
கூறு ஸ்கிரீன்ஷாட்களை எடுக்க வழங்கப்பட்ட உலாவிகளைப் பயன்படுத்தும்
[!NOTE] நீங்கள் இயக்க விரும்பும் உலாவிகளை உங்கள் உள்ளூர் இயந்திரத்தில் நிறுவியுள்ளீர்கள் என்பதை உறுதிப்படுத்திக் கொள்ளுங்கள்
--clip
- வகை:
boolean - கட்டாயம்: இல்லை
- இயல்புநிலை:
true - எடுத்துக்காட்டு:
npx wdio tests/configs/wdio.local.desktop.storybook.conf.ts --storybook --clip=false
முடக்கப்பட்டிருக்கும்போது இது ஒரு viewport ஸ்கிரீன்ஷாட்டை உருவாக்கும். இயக்கப்பட்டிருக்கும்போது, இது --clipSelector அடிப்படையில் உறுப்பு ஸ்கிரீன்ஷாட்களை உருவாக்கும், இது கூறு ஸ்கிரீன்ஷாட்டைச் சுற்றியுள்ள வெள்ளை இடைவெளியின் அளவைக் குறைத்து, ஸ்கிரீன்ஷாட் அளவைக் குறைக்கும்.
--clipSelector
- வகை:
string - கட்டாயம்: இல்லை
- இயல்புநிலை: Storybook V7 க்கு
#storybook-root > :first-childமற்றும் Storybook V6 க்கு#root > :first-child:not(script):not(style),--versionஐயும் பார்க்கவும் - எடுத்துக்காட்டு:
npx wdio tests/configs/wdio.local.desktop.storybook.conf.ts --storybook --clipSelector="#some-id"
இது பின்வருவனவற்றிற்குப் பயன்படுத்தப்படும் தேர்வியாகும்:
- ஸ்கிரீன்ஷாட் எடுக்க வேண்டிய உறுப்பைத் தேர்ந்தெடுக்க
- ஸ்கிரீன்ஷாட் எடுக்கப்படுவதற்கு முன் தெரியக்கூடிய உறுப்புக்காக காத்திருக்க
--devices
- வகை:
string - கட்டாயம்: இல்லை
- இயல்புநிலை: நீங்கள்
deviceDescriptors.tsஇலிருந்து தேர்ந்தெடுக்கலாம் - எடுத்துக்காட்டு:
npx wdio tests/configs/wdio.local.desktop.storybook.conf.ts --storybook --devices="iPhone 14 Pro Max","Pixel 3 XL" - குறிப்பு: CLI மூலம் மட்டுமே கிடைக்கும்
கூறு ஸ்கிரீன்ஷாட்களை எடுக்க deviceDescriptors.ts உடன் பொருந்தும் வழங்கப்பட்ட சாதனங்களைப் பயன்படுத்தும்
[!NOTE]
- ஒரு சாதன கட்டமைப்பை நீங்கள் தவறவிட்டால், அம்ச கோரிக்கை ஐச் சமர்ப்பிக்கத் தயங்காதீர்கள்
- இது Chrome இல் மட்டுமே வேலை செய்யும்:
- நீங்கள்
--devicesவழங்கினால், அனைத்து Chrome நிகழ்வுகளும் மொபைல் எமுலேஷன் முறையில் இயங்கும்- நீங்கள் Chrome தவிர மற்ற உலாவிகளையும் வழங்கினால், எ.கா.
--devices --browsers=firefox,safari,edgeஇது தானாகவே Chrome ஐ மொபைல் எமுலேஷன் முறையில் சேர்க்கும்- Storybook ரன்னர் இயல்பாக உறுப்பு ஸ்னாப்ஷாட்களை உருவாக்கும், முழு மொபைல் எமுலேட்டட் ஸ்கிரீன்ஷாட்டைக் காண விரும்பினால், கட்டளை வரி மூலம்
--clip=falseஐ வழங்கவும்- கோப்பு பெயர் எடுத்துக்காட்டாக
__snapshots__/example/button/desktop_chrome/example-button--large-local-chrome-iPhone-14-Pro-Max-430x932-dpr-3.pngபோல் இருக்கும்- SRC: மொபைல் எமுலேஷனைப் பயன்படுத்தி டெஸ்க்டாப்பில் மொபைல் இணையதளத்தை சோதிப்பது பயனுள்ளதாக இருக்கலாம், ஆனால் சோதனையாளர்கள் பின்வரும் பல நுட்பமான வேறுபாடுகள் இருப்பதை அறிந்திருக்க வேண்டும்:
- முற்றிலும் வித்தியாசமான GPU, இது பெரிய செயல்திறன் மாற்றங்களுக்கு வழிவகுக்கும்;
- மொபைல் UI முன்னிலைப்படுத்தப்படவில்லை (குறிப்பாக, url பட்டியை மறைப்பது பக்க உயரத்தை பாதிக்கிறது);
- தெளிவுபடுத்தும் பாப்அப் (சில தொடு இலக்குகளில் ஒன்றைத் தேர்ந்தெடுக்கும் இடம்) ஆதரிக்கப்படவில்லை;
- பல ஹார்டுவேர் API கள் (எடுத்துக்காட்டாக, orientationchange நிகழ்வு) கிடைக்கவில்லை.
--headless
- வகை:
boolean - கட்டாயம்: இல்லை
- இயல்புநிலை:
true - எடுத்துக்காட்டு:
npx wdio tests/configs/wdio.local.desktop.storybook.conf.ts --storybook --headless=false - குறிப்பு: CLI மூலம் மட்டுமே கிடைக்கும்
இயல்பாக இது சோதனைகளை (உலாவி ஆதரிக்கும்போது) headless முறையில் இயக்கும் அல்லது முடக்கப்படலாம்
--numShards
- வகை:
number - கட்டாயம்: இல்லை
- இயல்புநிலை:
true - எடுத்துக்காட்டு:
npx wdio tests/configs/wdio.local.desktop.storybook.conf.ts --storybook --numShards=10
கதைகளை இயக்க பயன்படுத்தப்படும் இணை நிகழ்வுகளின் எண்ணிக்கை இதுவாகும். இது உங்கள் wdio.conf-கோப்பில் உள்ள maxInstances ஆல் வரம்பிடப்படும்.
[!IMPORTANT]
headless-முறையில் இயக்கும்போது, வள கட்டுப்பாடுகள் காரணமாக நிலைத்தன்மையைத் தடுக்க எண்ணிக்கையை 20 க்க ு மேல் அதிகரிக்க வேண்டாம்
--skipStories
- வகை:
string|regex - கட்டாயம்: இல்லை
- இயல்புநிலை: null
- எடுத்துக்காட்டு:
npx wdio tests/configs/wdio.local.desktop.storybook.conf.ts --storybook --skipStories="/.*button.*/gm"
இது இருக்கலாம்:
- ஒரு சரம் (
example-button--secondary,example-button--small) - அல்லது ஒரு regex (
"/.*button.*/gm")
சில கதைகளைத் தவிர்க்க. கதையின் URL இல் காணப்படும் id ஐப் பயன்படுத்தவும். எடுத்துக்காட்டாக, இந்த URL இல் http://localhost:6006/?path=/story/example-page--logged-out உள்ள id என்பது example-page--logged-out ஆகும்
--url
- வகை:
string - கட்டாயம்: இல்லை
- இயல்புநிலை:
http://127.0.0.1:6006 - எடுத்துக்காட்டு:
npx wdio tests/configs/wdio.local.desktop.storybook.conf.ts --storybook --url="https://example.com"
உங்கள் Storybook நிகழ்வு ஹோஸ்ட் செய்யப்பட்டுள்ள URL.
--version
- வகை:
number - கட்டாயம்: இல்லை
- இயல்புநிலை: 7
- எடுத்துக்காட்டு:
npx wdio tests/configs/wdio.local.desktop.storybook.conf.ts --storybook --version=6
இது Storybook இன் பதிப்பாகும், இயல்பாக 7 ஆகும். V6 clipSelector பயன்படுத்த வேண்டுமா என்பதை அறிய இது தேவை.
Storybook இடைவினை சோதனை
Storybook இடைவினை சோதனை உங்கள் கூறுடன் தொடர்புகொள்ள WDIO கட்டளைகளுடன் தனிப்பயன் ஸ்கிரிப்ட்களை உருவாக்குவதன் மூலம் ஒரு குறிப்பிட்ட நிலையில் ஒரு கூறை அமைக்க அனுமதிக்கிறது. எடுத்துக்காட்டாக, கீழே உள்ள குறியீட்டு துணுக்கைப் பார்க்கவும்:
import { browser, expect } from "@wdio/globals";
describe("Storybook Interaction", () => {
it("should create screenshots for the logged in state when it logs out", async () => {
const componentId = "example-page--logged-in";
await browser.waitForStorybookComponentToBeLoaded({ id: componentId });
await expect($("header")).toMatchElementSnapshot(
`${componentId}-logged-in-state`
);
await $("button=Log out").click();
await expect($("header")).toMatchElementSnapshot(
`${componentId}-logged-out-state`
);
});
it("should create screenshots for the logged out state when it logs in", async () => {
const componentId = "example-page--logged-out";
await browser.waitForStorybookComponentToBeLoaded({ id: componentId });
await expect($("header")).toMatchElementSnapshot(
`${componentId}-logged-out-state`
);
await $("button=Log in").click();
await expect($("header")).toMatchElementSnapshot(
`${componentId}-logged-in-state`
);
});
});
இரண்டு வெவ்வேறு கூறுகளில் இரண்டு சோதனைகள் செயல்படுத்தப்படுகின்றன. ஒவ்வொரு சோதனையும் முதலில் ஒரு நிலையை அமைத்து பின்னர் ஸ்கிரீன்ஷாட் எடுக்கிறது. ஒரு புதிய தனிப்பயன் கட்டளை அறிமுகப்படுத்தப்பட்டுள்ளதையும் நீங்கள் கவனிப்பீர்கள், அதை இங்கு காணலாம்.
மேலே உள்ள விவரக்குறிப்பு கோப்பை ஒரு கோப்புறையில் சேமித்து பின்வரும் கட்டளையுடன் கட்டளை வரிக்குச் சேர்க்கலாம்:
pnpm run test.local.desktop.storybook.localhost -- --spec='tests/specs/storybook-interaction/*.ts'
Storybook ரன்னர் முதலில் தானாகவே உங்கள் Storybook நிகழ்வை ஸ்கேன் செய்து, பின்னர் ஒப்பிட வேண்டிய கதைகளுக்கு உங்கள் சோதனைகளைச் சேர்க்கும். இடைவினை சோதனைக்கு நீங்கள் பயன்படுத்தும் கூறுகள் இருமுறை ஒப்பிடப்படுவதை விரும்பவில்லை என்றால், ஸ்கேனில் இருந்து "இயல்புநிலை" கதைகளை அகற்ற --skipStories வடிப்பானை வழங்குவதன் மூலம் வடிகட்டியை சேர்க்கலாம். இது இவ்வாறு இருக்கும்:
pnpm run test.local.desktop.storybook.localhost -- --skipStories="/example-page.*/gm" --spec='tests/specs/storybook-interaction/*.ts'