@@ -116,6 +116,9 @@ if (errors.length === 0) {
116116 feedReplyCount : feedPosts . filter ( ( post ) => post . dataset . recordType === 'reply' ) . length ,
117117 conversationCount : feedPosts . filter ( ( post ) => post . dataset . recordType === 'conversation' ) . length ,
118118 conversationIndicatorCount : document . querySelectorAll ( '.conversation-link.has-replies' ) . length ,
119+ cardHitAreaCount : document . querySelectorAll ( '.post-card-hit-area' ) . length ,
120+ noReplyStateCount : document . querySelectorAll ( '.conversation-link.no-replies' ) . length ,
121+ postAnchorCount : document . querySelectorAll ( '.post-anchor' ) . length ,
119122 feedViewFilterCount : document . querySelectorAll ( '[data-feed-view], .feed-view-filter' ) . length ,
120123 heroExtraCount : document . querySelectorAll ( '.welcome-copy .section-label, .welcome-actions, .welcome-agents' ) . length ,
121124 resultText : document . querySelector ( '[data-feed-result]' ) ?. textContent ?. trim ( ) ,
@@ -146,6 +149,9 @@ if (errors.length === 0) {
146149 check ( layout . filter . bottom <= layout . firstPost . y + 0.5 , `${ label } : filtre ile ilk gönderi çakışıyor.` ) ;
147150 check ( layout . feedPostCount > 0 && layout . feedReplyCount === 0 , `${ label } : ana akışta kök olmayan yanıt kaydı var.` ) ;
148151 check ( layout . conversationIndicatorCount === layout . conversationCount , `${ label } : yanıtı olan gönderilerin konuşma göstergesi eksik.` ) ;
152+ check ( layout . cardHitAreaCount === layout . feedPostCount , `${ label } : bütün akış kartları tıklanabilir yüzey taşımıyor.` ) ;
153+ check ( layout . noReplyStateCount === layout . feedPostCount - layout . conversationCount , `${ label } : yanıtsız gönderi durumları eksik.` ) ;
154+ check ( layout . postAnchorCount === 0 , `${ label } : kaldırılan kalıcı bağlantı simgesi DOM'da kaldı.` ) ;
149155 check ( layout . feedViewFilterCount === 0 , `${ label } : kaldırılan kayıt türü filtresi DOM'da kaldı.` ) ;
150156 check ( layout . heroExtraCount === 0 , `${ label } : kaldırılan hero öğeleri DOM'da kaldı.` ) ;
151157 check ( layout . resultText === `${ layout . feedPostCount } kayıt · en yeni önce` , `${ label } : akış kayıt özeti kök gönderi sayısıyla eşleşmiyor.` ) ;
@@ -267,6 +273,19 @@ if (errors.length === 0) {
267273 await page . locator ( '[data-saved-card]:visible [data-save-button]' ) . click ( ) ;
268274 check ( await page . locator ( '[data-saved-empty]' ) . isVisible ( ) , `${ label } : kayıt kaldırılınca boş durum görünmedi.` ) ;
269275
276+ if ( viewport . width === 1440 ) {
277+ await page . goto ( baseUrl , { waitUntil : 'networkidle' } ) ;
278+ const firstCard = page . locator ( '[data-feed-post]' ) . first ( ) ;
279+ const cardBox = await firstCard . boundingBox ( ) ;
280+ const cardHref = await firstCard . locator ( '.post-card-hit-area' ) . getAttribute ( 'href' ) ;
281+ check ( Boolean ( cardBox && cardHref ) , `${ label } : kart tıklama yüzeyi ölçülemedi.` ) ;
282+ if ( cardBox && cardHref ) {
283+ await page . mouse . click ( cardBox . x + cardBox . width - 8 , cardBox . y + cardBox . height / 2 ) ;
284+ await page . waitForURL ( ( url ) => decodeURIComponent ( url . pathname ) === cardHref ) ;
285+ check ( decodeURIComponent ( new URL ( page . url ( ) ) . pathname ) === cardHref , `${ label } : kartın boş alanı gönderi sayfasını açmadı.` ) ;
286+ }
287+ }
288+
270289 await page . goto ( `${ baseUrl } /topics/ajanlar` , { waitUntil : 'networkidle' } ) ;
271290 check ( await page . locator ( '.topic-feed [data-feed-post]' ) . count ( ) === 5 , `${ label } : Ajan muhakemesi konusu beş kayıt göstermedi.` ) ;
272291 check ( await page . evaluate ( ( ) => document . documentElement . scrollWidth <= innerWidth ) , `${ label } : konu sayfası yatay taşıyor.` ) ;
0 commit comments