Ana içeriğe geç

Uygulama Şablonu

Genel Bakış

e2e/app-template dizininde, testlerin çalışmasını sağlamak için bazı özelleştirmeler ve yardımcı araçlar sunan bir uygulama şablonu oluşturulmuştur. Uygulama şablonunda herhangi bir değişiklik yapıldığında, test uygulamalarını yeni şablonla güncellemek için yarn test:e2e:clean komutunu çalıştırmanız gerekecektir.

ipucu

Bir test örneğinin hangi içerik şemalarına sahip olduğu ve oluşturduğumuz API özelleştirmeleri hakkında burada okuyabilirsiniz.

Uygulama Şablonunu Güncelleme

Uygulama şablonunu güncellemek için:

  • Mevcut şablon bazında bir Strapi uygulaması oluşturmak için testleri çalıştırın: test-apps/e2e/test-app-.
  • Bu klasöre geçin ve yarn develop komutunu çalıştırın.
  • e2e/constants.js içinde bulunan kimlik bilgilerini kullanarak giriş yapın.
  • Gerekli değişiklikleri yapın (yani bir içerik türü oluşturun).
  • Mevcut dizindeki içeriği, e2e/app-template içindeki şablon ile değiştirin (sadece ihtiyaç duyduğunuz dosyaları saklayın).

İçerik Şemaları

Makale

{
// ...
"attributes": {
"title": {
"type": "string"
},
"content": {
"type": "blocks"
},
"authors": {
"type": "relation",
"relation": "manyToMany",
"target": "api::author.author",
"inversedBy": "articles"
}
}
// ...
}

Yazar

{
// ...
"attributes": {
"name": {
"type": "string"
},
"profile": {
"allowedTypes": ["images", "files", "videos", "audios"],
"type": "media",
"multiple": false
},
"articles": {
"type": "relation",
"relation": "manyToMany",
"target": "api::article.article",
"mappedBy": "authors"
}
}
// ...
}

Ana Sayfa (Tek Tür)

{
// ...
"attributes": {
"title": {
"type": "string"
},
"content": {
"type": "blocks"
},
"admin_user": {
"type": "relation",
"relation": "oneToOne",
"target": "admin::user"
},
"seo": {
"type": "component",
"repeatable": false,
"component": "meta.seo"
}
}
// ...
}

Ürün

Bu koleksiyon türü uluslararasılaştırılmıştır.

{
// ...
"attributes": {
"name": {
"pluginOptions": {
"i18n": {
"localized": true
}
},
"type": "string",
"required": true
},
"slug": {
"pluginOptions": {
"i18n": {
"localized": true
}
},
"type": "uid",
"targetField": "name",
"required": true
},
"isAvailable": {
"pluginOptions": {
"i18n": {
"localized": false
}
},
"type": "boolean",
"default": true,
"required": true
},
"description": {
"pluginOptions": {
"i18n": {
"localized": true
}
},
"type": "blocks"
},
"images": {
"type": "media",
"multiple": true,
"required": false,
"allowedTypes": ["images", "files", "videos", "audios"],
"pluginOptions": {
"i18n": {
"localized": false
}
}
},
"seo": {
"type": "component",
"repeatable": false,
"pluginOptions": {
"i18n": {
"localized": true
}
},
"component": "meta.seo"
},
"sku": {
"pluginOptions": {
"i18n": {
"localized": true
}
},
"type": "integer",
"unique": true
},
"variations": {
"type": "component",
"repeatable": true,
"pluginOptions": {
"i18n": {
"localized": true
}
},
"component": "product.variations"
}
}
// ...
}

Mağaza (Tek Tür)

Bu tek tür uluslararasılaştırılmıştır.

{
// ...
"attributes": {
"title": {
"pluginOptions": {
"i18n": {
"localized": true
}
},
"type": "string",
"required": true
},
"content": {
"pluginOptions": {
"i18n": {
"localized": true
}
},
"type": "dynamiczone",
"components": [
"page-blocks.product-carousel",
"page-blocks.hero-image",
"page-blocks.content-and-image"
],
"required": true,
"min": 2
},
"seo": {
"type": "component",
"repeatable": false,
"pluginOptions": {
"i18n": {
"localized": true
}
},
"component": "meta.seo"
}
}
// ...
}

Yaklaşan Maç (Tek Tür)

{
// ...
"attributes": {
"title": {
"type": "string"
},
"number_of_upcoming_matches": {
"type": "integer"
},
"next_match": {
"type": "date"
}
}
// ...
}

API Özelleştirmeleri

Konfigürasyon

template/src/api/config altında bulunur.

Oran Sınırı

Kullanım
async function toggleRateLimiting(page, enabled = true) {
await page.request.fetch('/api/config/ratelimit/enable', {
method: 'POST',
data: { value: enabled },
});
}
Ne yapar?

Bu uç nokta, oran sınırlama ara katmanını etkinleştirmek veya devre dışı bırakmak için kullanılabilir. Etkinleştirildiğinde, her kullanıcı için giriş istekleri 5 dakikada 5 ile sınırlandırılır.

bilgi

Yanlış giriş denemelerini test etmek için oran sınırlamasını devre dışı bıraktığımız durumlar vardır.

Yönetici Otomatik Açma

Kullanım
  bootstrap({ strapi }) {
strapi.service('api::config.config').adminAutoOpenEnable(false);
},
Ne yapar?

Bu uç nokta, yönetici otomatik açmayı etkinleştirmek veya devre dışı bırakmak için kullanılabilir.

Neden var?

E2E testleri ile yerel olarak çalışmak zorlayıcı olabilir. Otomatik açma true olarak ayarlandığında, E2E testlerini çalıştırdığınızda her seferinde bir tarayıcı penceresi açılır, zira Strapi uygulaması ilk kez başlar. Bu nedenle, test uygulaması örneğinin başlatma aşamasında bunu devre dışı bırakıyoruz.