Bird
Raised Fist0
Cypresstesting~20 mins

File download verification in Cypress - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
File Download Verification Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Verify file download success with Cypress
What will be the result of this Cypress test code when verifying a file download?
Cypress
cy.downloadFile('https://example.com/report.pdf', 'cypress/downloads', 'report.pdf')
  .then(() => {
    cy.readFile('cypress/downloads/report.pdf').should('have.length.above', 0)
  })
ATest fails because cy.readFile cannot read PDF files
BTest passes but file content is not verified
CTest fails due to syntax error in chaining
DTest passes because the file is downloaded and exists in the folder
Attempts:
2 left
💡 Hint
cy.readFile can check if a file exists after download
❓ assertion
intermediate
1:30remaining
Correct assertion to verify downloaded file content
Which assertion correctly verifies that the downloaded text file contains the word 'Success'?
Cypress
cy.readFile('cypress/downloads/result.txt').should(____)
A"have.text", "Success"
B"contain", "Success"
C"include", "Success"
D"include.text", "Success"
Attempts:
2 left
💡 Hint
Use the correct Cypress string assertion for substring matching
🔧 Debug
advanced
2:00remaining
Identify the error in this file download test
Why does this Cypress test fail to verify the downloaded file?
Cypress
cy.get('#download-btn').click()
cy.readFile('cypress/downloads/report.pdf').should('have.length.above', 0)
Acy.readFile cannot read PDF files
BThe selector '#download-btn' is invalid
CThe test does not wait for the download to complete before reading the file
DThe file path is incorrect
Attempts:
2 left
💡 Hint
Downloads may take time; reading file immediately can fail
🧠 Conceptual
advanced
2:30remaining
Best practice for verifying file downloads in Cypress
Which approach is best to verify a file download in Cypress tests?
AIntercept the download request and check the response headers and body
BClick download button and immediately check file existence in downloads folder
CUse cy.readFile to read the file before clicking download
DCheck the UI message that says 'Download started' without checking the file
Attempts:
2 left
💡 Hint
Intercepting network requests gives more control and certainty
❓ framework
expert
3:00remaining
Implementing a custom Cypress command for file download verification
Which custom Cypress command implementation correctly waits for a file to be downloaded and verifies its existence?
Cypress
Cypress.Commands.add('verifyDownload', (fileName) => {
  const downloadsFolder = Cypress.config('downloadsFolder')
  cy.readFile(`${downloadsFolder}/${fileName}`, { timeout: 15000 }).should('have.length.above', 0)
})
AThe command waits up to 15 seconds for the file to exist and asserts its presence
BThe command immediately reads the file without waiting, causing flaky tests
CThe command uses incorrect path syntax causing a runtime error
DThe command only checks file size but not existence
Attempts:
2 left
💡 Hint
Use timeout option in cy.readFile to wait for file

Practice

(1/5)
1. What is the main purpose of file download verification in Cypress testing?
easy
A. To speed up the test execution time
B. To ensure the downloaded file is correct and complete
C. To check the website's loading speed
D. To verify the page layout after download

Solution

  1. Step 1: Understand file download verification

    File download verification checks if the file users get is the right one and fully downloaded.
  2. Step 2: Identify the main goal

    The goal is to confirm the file content and completeness, not speed or layout.
  3. Final Answer:

    To ensure the downloaded file is correct and complete -> Option B
  4. Quick Check:

    File correctness = B [OK]
Hint: File download verification checks file correctness, not speed [OK]
Common Mistakes:
  • Confusing download verification with page speed testing
  • Thinking it checks page layout after download
  • Assuming it speeds up tests
2. Which Cypress command is used to read the contents of a downloaded file for verification?
easy
A. cy.readFile()
B. cy.getFile()
C. cy.downloadFile()
D. cy.checkFile()

Solution

  1. Step 1: Identify commands related to file handling

    cy.downloadFile() downloads files, cy.readFile() reads file contents.
  2. Step 2: Choose the command to read file contents

    To verify file content, cy.readFile() is used, not cy.downloadFile().
  3. Final Answer:

    cy.readFile() -> Option A
  4. Quick Check:

    Read file = cy.readFile() = A [OK]
Hint: Use cy.readFile() to check file content after download [OK]
Common Mistakes:
  • Using cy.downloadFile() to read file content
  • Assuming cy.getFile() exists
  • Confusing cy.checkFile() with real commands
3. Given the code snippet:
cy.downloadFile('https://example.com/report.pdf', 'cypress/downloads', 'report.pdf')
  .then(() => {
    cy.readFile('cypress/downloads/report.pdf').should('exist')
  })

What will this test verify?
medium
A. That the downloads folder is empty before download
B. That the file 'report.pdf' is empty
C. That the URL 'https://example.com/report.pdf' is reachable
D. That the file 'report.pdf' exists in the downloads folder after download

Solution

  1. Step 1: Analyze the downloadFile command

    The command downloads 'report.pdf' to 'cypress/downloads'.
  2. Step 2: Analyze the readFile assertion

    It checks if 'report.pdf' exists in the downloads folder after download.
  3. Final Answer:

    That the file 'report.pdf' exists in the downloads folder after download -> Option D
  4. Quick Check:

    File existence check = D [OK]
Hint: Check file existence with cy.readFile().should('exist') [OK]
Common Mistakes:
  • Assuming it checks file content or emptiness
  • Thinking it tests URL reachability
  • Confusing pre-download folder state with post-download check
4. Identify the error in this Cypress test code for file download verification:
cy.downloadFile('https://example.com/data.csv', 'cypress/downloads', 'data.csv')
cy.readFile('cypress/downloads/data.csv').should('contain', 'Name, Age')
medium
A. Wrong assertion method; should use 'exist' instead of 'contain'
B. Incorrect file path in readFile command
C. Missing chaining or waiting for download to complete before reading file
D. cy.downloadFile does not exist in Cypress

Solution

  1. Step 1: Check command sequence and chaining

    The download and readFile commands run separately without waiting for download to finish.
  2. Step 2: Identify the need for chaining or waiting

    Without chaining or waiting, readFile may run before download completes, causing test failure.
  3. Final Answer:

    Missing chaining or waiting for download to complete before reading file -> Option C
  4. Quick Check:

    Wait for download before readFile = C [OK]
Hint: Chain commands or wait to ensure download finishes before reading [OK]
Common Mistakes:
  • Running readFile immediately without waiting
  • Assuming cy.downloadFile is not a valid command
  • Using wrong assertion method for content check
5. You want to verify that a downloaded CSV file contains the header 'ID, Name, Email' and is not empty. Which Cypress test code correctly achieves this?
hard
A. cy.downloadFile('https://example.com/users.csv', 'cypress/downloads', 'users.csv') .then(() => { cy.readFile('cypress/downloads/users.csv').should('contain', 'ID, Name, Email').and('not.be.empty') })
B. cy.readFile('cypress/downloads/users.csv').should('contain', 'ID, Name, Email') cy.downloadFile('https://example.com/users.csv', 'cypress/downloads', 'users.csv')
C. cy.downloadFile('https://example.com/users.csv', 'cypress/downloads', 'users.csv') cy.readFile('cypress/downloads/users.csv').should('exist')
D. cy.downloadFile('https://example.com/users.csv', 'cypress/downloads', 'users.csv') .then(() => { cy.readFile('cypress/downloads/users.csv').should('be.empty') })

Solution

  1. Step 1: Ensure download completes before reading file

    cy.downloadFile('https://example.com/users.csv', 'cypress/downloads', 'users.csv') .then(() => { cy.readFile('cypress/downloads/users.csv').should('contain', 'ID, Name, Email').and('not.be.empty') }) chains .then() after downloadFile to wait for completion.
  2. Step 2: Verify file contains header and is not empty

    cy.downloadFile('https://example.com/users.csv', 'cypress/downloads', 'users.csv') .then(() => { cy.readFile('cypress/downloads/users.csv').should('contain', 'ID, Name, Email').and('not.be.empty') }) uses should('contain', ...) and .and('not.be.empty') correctly to check content and non-empty file.
  3. Final Answer:

    cy.downloadFile('https://example.com/users.csv', 'cypress/downloads', 'users.csv') .then(() => { cy.readFile('cypress/downloads/users.csv').should('contain', 'ID, Name, Email').and('not.be.empty') }) -> Option A
  4. Quick Check:

    Chain download and readFile with content checks = A [OK]
Hint: Chain downloadFile with readFile and use should contain + not.be.empty [OK]
Common Mistakes:
  • Not chaining download and readFile causing timing issues
  • Checking file existence only without content validation
  • Asserting file is empty instead of not empty
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard