randomMachineName()); $this->drupalCreateContentType(['type' => 'article', 'name' => 'Article']); $this->createFileField($field_name, 'node', 'article', [], ['file_extensions' => 'txt']); $this->drupalLogin($this->drupalCreateUser([ 'access content', 'create article content', ])); $page = $this->getSession()->getPage(); $this->drupalGet('node/add/article'); $image_file = current($this->getTestFiles('image')); $image_path = $this->container->get('file_system')->realpath($image_file->uri); $page->attachFileToField('files[' . $field_name . '_0]', $image_path); $elements = $page->waitFor(10, function () use ($page) { return $page->findAll('css', '.messages--error'); }); $this->assertCount(1, $elements, 'Ajax validation messages are displayed once.'); } }