-
Notifications
You must be signed in to change notification settings - Fork 21
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Testování actorů #819
Comments
Zatím jsem přidal common script pro test actora a updatnul jsem všechny actory aby jej používali. Ještě musím vyřešit chybějící apify storage local soubory kde je i ten INPUT.json. Zkoušel jsem je vygenerovat přes apify init, ale to mění i .gitignore daného actoru. Opravim to jedoduše tak že ten chybějící INPUT vč ev. složek nad ním vytořim v to scriptu co test spouští. |
Add přednastavení |
@junkycoder všichni aktoři mají něco takového: const input = await Apify.getInput();
const { debug = false, country = COUNTRY.CZ, type = "FULL" } = input ?? {}; a to je to místo, kde by to mělo být: const input = await Apify.getInput();
const { debug = false, country = COUNTRY.CZ, type = ActorType.FULL, testUrl = "https://example.com/"} = input ?? {}; Tj. je tam default hodnota definovaná actorem a jde přepsat inputem. |
Uff, prolezl jsem všechny jen abych to učesal - fb8ab40 - a sepsal si poznámky: const ActorType = {
BF: "BF",
FULL: "FULL",
TEST: "TEST"
}; Bordel v input typech. Nově používáme tyhle tři, ale některé aktory mají svoje extra typy. // tsbohemia-daily
export const LABELS = {
START: "START",
BF: "BF",
PAGE: "PAGE",
PRICE: "PRICE"
};
// alza-daily
const TYPE = {
FULL: "FULL",
TRHAK: "TRHAK",
FEED: "FEED",
BLACK_FRIDAY: "BF",
TEST: "TEST"
};
// conrad-daily
export const LABELS = {
API_START: "API-START",
API_LIST: "API-LIST",
API_DETAIL: "API-DETAIL",
SITEMAP_START: "SITEMAP-START",
SITEMAP_LIST: "SITEMAP-LIST"
};
// datart-daily
const LABELS = {
START: "START",
CATEGORY: "CATEGORY",
CATEGORY_NEXT: "CATEGORY_NEXT",
BF: "BF"
};
type === "COUNT" // ??
// dek-daily
// proč je main.js v src? Proč vůbec existuje src dir ve všech aktorech?
// e-coop-daily
// nemá žádný input.type
// electroworld-daily
type === "DETAIL"
type === "COUNT"
type === "TEST_FULL"
type === "FULL" || type === "TEST_FULL"
// eva-daily
type === "FULL" || type === "COUNT"
type === "COUNT" ? "COUNT" : "CATEGORY",
!development && type !== "COUNT"
// hornbach-daily
// zase main v src a žádný typ
// jakej je vztah mezi LABEL a TYPE?
export const LABELS = {
SITE: "SITE",
CATEGORY: "CATEGORY"
};
// hs-reviews
// žádný typ a extra main.test.mjs file, tohle bude první pokud o testování a měl by bejt nahrazenej ActorType.TEST?
// iglobus-daily
// žádný typ
// ikea-daily
// main v src
type = "DAILY"
type === "DAILY"
type === "COUNT"
// itesco-daily
// 👌
// kasa-count
// žádné typy, ale používájí se LABELS - LIST a DETAIL
// kasa-daily
request.userData.label === "START"
request.userData.label === "LAST_CATEGORY_PAGE"
label: "LAST_CATEGORY"
request.userData.label === "SUB_CATEGORY"
request.userData.label === "MAIN_CATEGORY"
request.userData.label === LAST_CATEGORY
// takže jakej je rozdíl mezi type a label?
// knihydobrovsky-count
// žádný type ale label
switch (label) {
case "LIST":
case "SUBLIST":
// knihydobrovsky-daily
// typy plus labels
label: "LIST"
label: "SUBLIST"
// kosik-daily
// pouze BF type, přidal jsem FULL jako default
// lekarna-daily
// FULL a BF typy plus labely
request.userData.label === "SUB_CATEGORY"
request.userData.label === "PAGE"
request.userData.label === "PAGI_PAGE"
request.userData.label === "START"
// lidl-daily
// zase main v src, tohle dělá Lukáš pořád
// použit pouze BF typ a mraky labelů
switch (label)
case LABELS.DETAIL
case LABELS.LIDL_SHOP
case LABELS.LIDL_SHOP_CAT
case LABELS.LIDL_SHOP_DETAIL
case LABELS.LIDL_SHOP_MAIN_CAT
case LABELS.LIDL_SHOP_SECTION
case LABELS.MAIN_NABIDKA
case LABELS.MAIN_NABIDKA_CAT
// luxor-daily
// tady se label == type a bůbec ten actor vypadá jinak než ostatní, proč?
type = LABELS.API_START, // API_START | FRONT_START | SITEMAP_START
const LABELS = {
API_START: "API-START",
API_LIST: "API-LIST",
API_DETAIL: "API-DETAIL",
FRONT_START: "FRONT-START",
FRONT_LIST: "FRONT-LIST",
FRONT_DETAIL: "FRONT-DETAIL",
SITEMAP_START: "SITEMAP-START",
SITEMAP_LIST: "SITEMAP-LIST"
};
switch (priceList[priceIx].type) {
case "RECOMMENDED":
case "SALE":
// makro-daily
// žádné typy, pouze labels
label: "START"
case "LIST":
case "PAGE":
// mall-daily
// klasické typy a jeden extra navíc plus labely
type === "CZECHITAS"
label: "PAGE"
label: "START"
label: "CZECHITAS-START"
label: "MAP"
label: "REVIEW",
// megaknihy-daily
// zase main v src a žádný type
switch (label)
case "START":
case "PAGE":
// mironet-daily
// základní typy a cizí labely
label: "page"
label: "category"
label: "page"
label: "category_vyprodej"
label: "pages"
// mountfield-daily
// main v src, LABELS consts :(, ale typy jsou (bf, full a test)
export const LABELS = {
MAIN_NABIDKA: "MAIN_NABIDKA",
MAIN_NABIDKA_CAT: "MAIN_NABIDKA_CAT",
DETAIL: "DETAIL",
LIDL_SHOP: "LIDL_SHOP",
LIDL_SHOP_MAIN_CAT: "LIDL_SHOP_MAIN_CAT",
LIDL_SHOP_CAT: "LIDL_SHOP_CAT",
LIDL_SHOP_DETAIL: "LIDL_SHOP_DETAIL",
LIDL_SHOP_SECTION: "LIDL_SHOP_SECTION"
};
// mp-daily
// Žádné type, ale LABELS konstanta se tahá z contextu, wtf?
const crawlContext = await init();
const { input, requestQueue, log, LABELS } = crawlContext;
// notino-daily
type !== "CZECHITAS"
label: BF
{ label: HOME_PAGE }
{ label: CATEGORY_PAGE }
// obi-daily
// no type just labels
label: "LIST"
label: "DETAIL"
label: "START"
label: label + "I" // WTF?
label.includes("SUBCAT") // fuck
// okay-daily
// Using ActorType now
const LABEL = {
COLLECTION: "COLLECTION",
COLLECTIONS: "COLLECTIONS",
LIST: "LIST"
};
// pilulka-daily
// zahrabanej main v src
// Používa je BF, FULL jako default
// prozdravi-daily
// main v src
export const LABELS = {
START: "START",
PRODUCTS: "PRODUCTS",
// BF: "BF" removed
};
// rohlik-daily
// type nepoužit
label: "main"
label: "list"
label: "PAGE"
// rozetka-daily
// routes? To je asi SPA
// ActorType nema DAILY ani COUNT, nechávám zatím být
export const ACTOR_TYPES = {
DAILY: "DAILY",
COUNT: "COUNT"
};
export const LABELS = {
MAIN_PAGE: "MAIN_PAGE",
CATEGORY_OR_PRODUCTS: "CATEGORY_OR_PRODUCTS"
};
// sleky-daily
// tady se místo type použivá mode (?)
mode === "LIST"
mode === "DETAIL"
// tetadrogerie-daily
// konečně actor bez zbytečných src/*
// tchibo-daily
// nepoužíva type, jen labels
const LABELS = {
NAVIGATION: "NAVIGATION",
CATEGORY: "CATEGORY",
CATEGORY_CAT: "CATEGORY_CAT",
COFFEE_CATEGORY: "COFFEE_CATEGORY",
LIST: "LIST"
};
// tsbohemia-daily
// border v tom že label se chová jako type
export const LABELS = {
START: "START",
BF: "BF",
PAGE: "PAGE",
PRICE: "PRICE"
};
- } else if (type === "test") {
+ } else if (type === ActorType.TEST) {
type === LABELS.PRICE |
Pozor, LABEL je něco jinýho než TYPE. TYPE určuje v jakém módu jede celý actor. LABEL je konkrétní krok scraperu |
Ano, ale použitý je to často jako jedno a to samé. Musíme to roztrhnout, aby to labels nechodily hodnoty z type a obráceně.. |
Ok
…On Wed, Mar 23, 2022 at 11:50 AM Dan Hromada ***@***.***> wrote:
Ano, ale použitý je to často jako jedno a to samé. Musíme to roztrhnout,
aby to labels nechodily hodnoty z type a obráceně..
—
Reply to this email directly, view it on GitHub
<#819 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AAAYZTOGPOXCYLZHBZO5TB3VBLZN7ANCNFSM5RHZJTHA>
.
You are receiving this because you authored the thread.Message ID:
***@***.***>
|
`yarn test` actually calls 10 PAGEs rn. Does not test any other of special labels like BF or TRHAK. Still looks like good enough for now. Follow issue #819.
Trying to implement #819 but I am unable to reduce request calls. This context hell needs to be simplified.
Pro potřeby CI a CD potřebujeme v každém actoru vytvořit npm script
test
, který:INPUT.json
asi pomocíecho '{"type":"TEST"}' > apify_storage/key_value_store/INPUT.json
TEST=1 apify run -p
rm -fr apify_storage
Běh testu je primárně určen pro CI, kde je linux. Běh na Windows není prioritou.
Dále je potřeba projít všechny actory a zajistit, aby:
input.type === ActorType.TEST
input.testUrl
jako default, který jde přepsat zvenku.ENV
TEST
slouží k deaktivaci uploadu dat do Kebooly adata.hlidacshopu.cz
The text was updated successfully, but these errors were encountered: