3 namespace Drupal\Tests\file\FunctionalJavascript;
5 use Drupal\FunctionalJavascriptTests\WebDriverTestBase;
6 use Drupal\Tests\file\Functional\FileFieldCreationTrait;
7 use Drupal\Tests\TestFileCreationTrait;
10 * Tests validation functions such as file type, max file size, max size per
15 class FileFieldValidateTest extends WebDriverTestBase {
17 use FileFieldCreationTrait;
18 use TestFileCreationTrait;
23 public static $modules = ['node', 'file'];
26 * Test the validation message is displayed only once for ajax uploads.
28 public function testAjaxValidationMessage() {
29 $field_name = strtolower($this->randomMachineName());
30 $this->drupalCreateContentType(['type' => 'article', 'name' => 'Article']);
31 $this->createFileField($field_name, 'node', 'article', [], ['file_extensions' => 'txt']);
33 $this->drupalLogin($this->drupalCreateUser([
35 'create article content',
38 $page = $this->getSession()->getPage();
39 $this->drupalGet('node/add/article');
40 $image_file = current($this->getTestFiles('image'));
41 $image_path = $this->container->get('file_system')->realpath($image_file->uri);
42 $page->attachFileToField('files[' . $field_name . '_0]', $image_path);
43 $elements = $page->waitFor(10, function () use ($page) {
44 return $page->findAll('css', '.messages--error');
46 $this->assertCount(1, $elements, 'Ajax validation messages are displayed once.');