Test files downloads with Cucumber

Hi everybody:

I'm writing tests for a future application with Cucumber and Capybara and I just want to know if there is anyway to check if the download links and/or the files are OK. An example scenario would be the following one:

Scenario: Checking links    Given I am logged in as ...    When I follow ...    And I click on "Download"    Then I should download "File1.zip"

Is it possible to do? Thanks.

John Wu wrote in post #961880:

Hi everybody:

I'm writing tests for a future application with Cucumber and Capybara and I just want to know if there is anyway to check if the download links and/or the files are OK.

Why do you want to use Cucumber to test that the files are OK? It seems to me that this is properly done in your model specs, by testing the methods that generate the files.

An example scenario would be the following one:

Scenario: Checking links    Given I am logged in as ...    When I follow ...    And I click on "Download"    Then I should download "File1.zip"

Is it possible to do or is there any other way to do something similar? Thanks.

This should be possible, perhaps by parsing response_body as suggested at http://nhw.pl/wp/2009/09/09/testing-binary-downloads-with-webrat .

Best,

Marnen Laibow-Koser wrote in post #961883:

Why do you want to use Cucumber to test that the files are OK? It seems to me that this is properly done in your model specs, by testing the methods that generate the files.

Hi, thank you very much for the answer. Sorry for the explanation, by OK I mean the correct file (not other), I´m not talking about correct size or whatever.

John Wu wrote in post #961887:

Marnen Laibow-Koser wrote in post #961883:

Why do you want to use Cucumber to test that the files are OK? It seems to me that this is properly done in your model specs, by testing the methods that generate the files.

Hi, thank you very much for the answer. Sorry for the explanation, by OK I mean the correct file (not other), I´m not talking about correct size or whatever.

How do you plan to check that? Name? MD5 hash?

Best,

At the moment, using the name to check the file is enough. By the way, do you know anyway to check if a sent mail have an attachment using Cucumber? Thanks again

John Wu wrote in post #961894:

At the moment, using the name to check the file is enough.

OK. Then you presumably already know how to do that.

By the way, do you know anyway to check if a sent mail have an attachment using Cucumber? Thanks again

You're asking the wrong questions, I think. The question is not "how to test for ... using Cucumber?"; the question is "how to test for ...?". Remember, there's nothing magical about Cucumber steps; they can call any Ruby code you like.

Best,

Marnen Laibow-Koser wrote in post #961899:

John Wu wrote in post #961894:

At the moment, using the name to check the file is enough.

OK. Then you presumably already know how to do that.

In fact, that's the main question because I have no idea how to do that.

By the way, do you know anyway to check if a sent mail have an attachment using Cucumber? Thanks again

You're asking the wrong questions, I think. The question is not "how to test for ... using Cucumber?"; the question is "how to test for ...?". Remember, there's nothing magical about Cucumber steps; they can call any Ruby code you like.

Sorry, my bad again.

John Wu wrote in post #961900:

Marnen Laibow-Koser wrote in post #961899:

John Wu wrote in post #961894:

At the moment, using the name to check the file is enough.

OK. Then you presumably already know how to do that.

In fact, that's the main question because I have no idea how to do that.

You'll probably want to download the file to a temporary directory (Tmpdir will come in handy here), which you know is blank at the beginning of the test, then check the contents of the directory after the test. There may be other approaches.

Capybara may have a canned way of doing this. Check the docs.

By the way, do you know anyway to check if a sent mail have an attachment using Cucumber? Thanks again

You're asking the wrong questions, I think. The question is not "how to test for ... using Cucumber?"; the question is "how to test for ...?". Remember, there's nothing magical about Cucumber steps; they can call any Ruby code you like.

Sorry, my bad again.

Oh, it's not "your bad"; I'm just trying to remind you that you probably know a lot of these answers already.

Best,