@ -78,83 +78,9 @@ test('New offers for another user', async ({ page }) => {
await expect ( page . locator ( 'div[role="alert"] button > svg.fa-xmark' ) ) . toBeHidden ( ) ; // ensure alert is gone
// as user 1, go to the home page and check that two offers are shown as new
console . log ( '[DEBUG] 60-new-activity: Switching to user01Did:' , user01Did ) ;
await switchToUser ( page , user01Did ) ;
console . log ( '[DEBUG] 60-new-activity: Switch completed, navigating to home page' ) ;
await page . goto ( './' ) ;
console . log ( '[DEBUG] 60-new-activity: Navigated to home page' ) ;
// Wait for page to load completely
await page . waitForLoadState ( 'networkidle' ) ;
console . log ( '[DEBUG] 60-new-activity: Page load completed' ) ;
// Add systematic debugging for the newDirectOffersActivityNumber element
console . log ( '[DEBUG] 60-new-activity: Looking for newDirectOffersActivityNumber element' ) ;
// Check if the element exists at all
const offerNumElem = page . getByTestId ( 'newDirectOffersActivityNumber' ) ;
const elementExists = await offerNumElem . count ( ) ;
console . log ( '[DEBUG] 60-new-activity: newDirectOffersActivityNumber element count:' , elementExists ) ;
// Check if parent containers exist
const offerContainer = page . locator ( '[data-testid="newDirectOffersActivityNumber"]' ) . locator ( '..' ) ;
const containerExists = await offerContainer . count ( ) ;
console . log ( '[DEBUG] 60-new-activity: Parent container exists:' , containerExists > 0 ) ;
if ( containerExists > 0 ) {
const containerVisible = await offerContainer . isVisible ( ) ;
console . log ( '[DEBUG] 60-new-activity: Parent container visible:' , containerVisible ) ;
}
// Look for any elements with test IDs that might be related
const allTestIds = page . locator ( '[data-testid]' ) ;
const testIdCount = await allTestIds . count ( ) ;
console . log ( '[DEBUG] 60-new-activity: Found' , testIdCount , 'elements with test IDs' ) ;
for ( let i = 0 ; i < Math . min ( testIdCount , 20 ) ; i ++ ) {
const element = allTestIds . nth ( i ) ;
const testId = await element . getAttribute ( 'data-testid' ) ;
const isVisible = await element . isVisible ( ) ;
const textContent = await element . textContent ( ) ;
console . log ( ` [DEBUG] 60-new-activity: TestID ${ i } : " ${ testId } " (visible: ${ isVisible } , text: " ${ textContent ? . trim ( ) } ") ` ) ;
}
// Check for the specific elements mentioned in HomeView.vue
const newOffersSection = page . locator ( 'div:has([data-testid="newDirectOffersActivityNumber"])' ) ;
const newOffersSectionExists = await newOffersSection . count ( ) ;
console . log ( '[DEBUG] 60-new-activity: New offers section exists:' , newOffersSectionExists > 0 ) ;
// Check for loading states
const loadingIndicators = page . locator ( '.fa-spinner, .fa-spin, [class*="loading"]' ) ;
const loadingCount = await loadingIndicators . count ( ) ;
console . log ( '[DEBUG] 60-new-activity: Loading indicators found:' , loadingCount ) ;
// Wait a bit longer and check again
console . log ( '[DEBUG] 60-new-activity: Waiting additional 3 seconds for offers to load' ) ;
await page . waitForTimeout ( 3000 ) ;
const elementExistsAfterWait = await offerNumElem . count ( ) ;
console . log ( '[DEBUG] 60-new-activity: newDirectOffersActivityNumber element count after wait:' , elementExistsAfterWait ) ;
if ( elementExistsAfterWait === 0 ) {
console . log ( '[DEBUG] 60-new-activity: Element still not found, taking screenshot' ) ;
await page . screenshot ( { path : 'debug-missing-offers-element.png' , fullPage : true } ) ;
console . log ( '[DEBUG] 60-new-activity: Screenshot saved as debug-missing-offers-element.png' ) ;
// Check page URL and state
const currentUrl = page . url ( ) ;
console . log ( '[DEBUG] 60-new-activity: Current URL:' , currentUrl ) ;
// Check if we're actually logged in as the right user
const didElement = page . getByTestId ( 'didWrapper' ) ;
const didElementExists = await didElement . count ( ) ;
if ( didElementExists > 0 ) {
const currentDid = await didElement . textContent ( ) ;
console . log ( '[DEBUG] 60-new-activity: Current DID on page:' , currentDid ? . trim ( ) ) ;
console . log ( '[DEBUG] 60-new-activity: Expected DID:' , user01Did ) ;
}
}
let offerNumElemForTest = page . getByTestId ( 'newDirectOffersActivityNumber' ) ;
await expect ( offerNumElemForTest ) . toHaveText ( '2' ) ;
@ -169,7 +95,7 @@ test('New offers for another user', async ({ page }) => {
await expect ( page . getByText ( ` help of ${ randomString1 } from #000 ` ) ) . toBeVisible ( ) ;
/ * *
* OFFER ACKNOWLEDGMENT MECHANISM DOCUMENTATION
* OFFER ACKNOWLEDGMENT MECHANISM :
*
* TimeSafari uses a pointer - based system to track which offers are "new" :
* - ` lastAckedOfferToUserJwtId ` stores the ID of the last acknowledged offer
@ -187,37 +113,13 @@ test('New offers for another user', async ({ page }) => {
* This test uses mechanism # 1 ( expansion ) for complete dismissal .
* The expansion already happened when we clicked the chevron above .
* /
console . log ( '[DEBUG] 60-new-activity: Offers section already expanded, marking all offers as read' ) ;
console . log ( '[DEBUG] 60-new-activity: Expansion calls expandOffersToUserAndMarkRead() -> sets lastAckedOfferToUserJwtId to newest offer' ) ;
// now see that all offers are dismissed since we expanded the section
console . log ( '[DEBUG] 60-new-activity: Going back to home page to check offers are dismissed' ) ;
await page . goto ( './' ) ;
// Add debugging for the final check
await page . waitForLoadState ( 'networkidle' ) ;
console . log ( '[DEBUG] 60-new-activity: Page loaded for final check' ) ;
const offerNumElemFinal = page . getByTestId ( 'newDirectOffersActivityNumber' ) ;
const elementExistsFinal = await offerNumElemFinal . count ( ) ;
console . log ( '[DEBUG] 60-new-activity: newDirectOffersActivityNumber element count (final check):' , elementExistsFinal ) ;
if ( elementExistsFinal > 0 ) {
const finalIsVisible = await offerNumElemFinal . isVisible ( ) ;
const finalText = await offerNumElemFinal . textContent ( ) ;
console . log ( '[DEBUG] 60-new-activity: Final element visible:' , finalIsVisible ) ;
console . log ( '[DEBUG] 60-new-activity: Final element text:' , finalText ) ;
if ( finalIsVisible ) {
console . log ( '[DEBUG] 60-new-activity: Element is still visible when it should be hidden' ) ;
await page . screenshot ( { path : 'debug-offers-still-visible-final.png' , fullPage : true } ) ;
console . log ( '[DEBUG] 60-new-activity: Screenshot saved as debug-offers-still-visible-final.png' ) ;
}
}
// wait until the list with ID listLatestActivity has at least one visible item
await page . locator ( '#listLatestActivity li' ) . first ( ) . waitFor ( { state : 'visible' } ) ;
console . log ( '[DEBUG] 60-new-activity: Activity list loaded' ) ;
await expect ( page . getByTestId ( 'newDirectOffersActivityNumber' ) ) . toBeHidden ( ) ;
} ) ;