The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use strict;
use warnings;
use Test::More;
use Brownie::Session;
use File::Spec;

my $app = sub {
    my $body = <<__HTTPD__;
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
    <title>test</title>
  </head>
  <body>
    <form action="/form" method="get">
      <input type="submit" id="submit" name="submit" value="submit"/>

      <p>
        <label for="file1">File1 Label</label>
        <input type="file" id="file1" name="file1" value=""/>
      </p>
      <p>
        <label>File2 Label<input type="file" id="file2" name="file2" value=""/></label>
      </p>
    </form>
  </body>
</html>
__HTTPD__

    [ 200, [ 'Content-Type' => 'text/html;charset=utf-8' ], [$body] ];
};

my $bs = Brownie::Session->new(driver => 'Mechanize', app => $app);

subtest 'attach_file' => sub {
    my $file_path = File::Spec->rel2abs($0);

    for (
        ['file1',       'file1'],
        ['File1 Label', 'file1'],
        ['File2 Label', 'file2'],
    ) {
        my ($locator, $id) = @$_;
        $bs->visit('/');

        ok $bs->attach_file($locator, $file_path);
        # XXX: should check whether file is uploaded
    }
};

done_testing;