<?php /* * This file is part of the symfony package. * (c) 2004-2006 Fabien Potencier <*****@*****.**> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ $app = 'i18n'; if (!(include dirname(__FILE__) . '/../bootstrap/functional.php')) { return; } class myTestBrowser extends sfTestBrowser { public function isUserCulture($culture) { $this->test->is($this->getContext()->getUser()->getCulture(), $culture, sprintf('user culture is "%s"', $culture)); return $this; } } $b = new myTestBrowser(); $b->initialize(); // default culture (en) $b->get('/')->isStatusCode(200)->isRequestParameter('module', 'i18n')->isRequestParameter('action', 'index')->isUserCulture('en')->checkResponseElement('#action', '/an english sentence/i')->checkResponseElement('#template', '/an english sentence/i'); $b->get('/fr/i18n/index')->isStatusCode(200)->isRequestParameter('module', 'i18n')->isRequestParameter('action', 'index')->isUserCulture('fr')->checkResponseElement('#action', '/une phrase en français/i')->checkResponseElement('#template', '/une phrase en français/i')->checkResponseElement('#action_local', '/une phrase locale en français/i')->checkResponseElement('#template_local', '/une phrase locale en français/i')->checkResponseElement('#action_other', '/une autre phrase en français/i')->checkResponseElement('#template_other', '/une autre phrase en français/i')->checkResponseElement('#action_other_local', '/une autre phrase locale en français/i')->checkResponseElement('#template_other_local', '/une autre phrase locale en français/i'); // messages for a module plugin $b->get('/fr/sfI18NPlugin/index')->isStatusCode(200)->isRequestParameter('module', 'sfI18NPlugin')->isRequestParameter('action', 'index')->isUserCulture('fr')->checkResponseElement('#action', '/une phrase en français/i')->checkResponseElement('#template', '/une phrase en français/i')->checkResponseElement('#action_local', '/une phrase locale en français/i')->checkResponseElement('#template_local', '/une phrase locale en français/i');
$response = $b->getResponse(); $content1 = $response->getContent(); $contentType1 = $response->getContentType(); $headers1 = $response->getHttpHeaders(); $b->get('/cache/action')->with('request')->begin()->isParameter('module', 'cache')->isParameter('action', 'action')->end()->with('response')->isStatusCode(200)->with('view_cache')->isCached(true); $b->test()->is(sfConfig::get('ACTION_EXECUTED', false), false, 'action is not executed when in cache'); $response = $b->getResponse(); $content2 = $response->getContent(); $contentType2 = $response->getContentType(); $headers2 = $response->getHttpHeaders(); $b->test()->is($content1, $content2, 'response content is the same'); $b->test()->is($contentType1, $contentType2, 'response content type is the same'); $b->test()->is($headers1, $headers2, 'response http headers are the same'); } } $b = new myTestBrowser(); // non HTML cache $image = file_get_contents(__DIR__ . '/fixtures/apps/cache/modules/cache/data/ok48.png'); sfConfig::set('sf_web_debug', true); $b->get('/cache/imageWithLayoutCacheWithLayout')->with('view_cache')->isCached(true, true)->checkResponseContent($image, 'image (with layout/page cache) in cache is not decorated when web_debug is on')->get('/cache/imageWithLayoutCacheWithLayout')->with('view_cache')->isCached(true, true)->checkResponseContent($image, 'image (with layout/page cache) in cache is not decorated when web_debug is on')->get('/cache/imageWithLayoutCacheNoLayout')->with('view_cache')->isCached(true)->checkResponseContent($image, 'image (with layout/action cache) in cache is not decorated when web_debug is on')->get('/cache/imageWithLayoutCacheNoLayout')->with('view_cache')->isCached(true)->checkResponseContent($image, 'image (with layout/action cache) in cache is not decorated when web_debug is on')->get('/cache/imageNoLayoutCacheWithLayout')->with('view_cache')->isCached(true, true)->checkResponseContent($image, 'image (no layout/page cache) in cache is not decorated when web_debug is on')->get('/cache/imageNoLayoutCacheWithLayout')->with('view_cache')->isCached(true, true)->checkResponseContent($image, 'image (no layout/page cache) in cache is not decorated when web_debug is on')->get('/cache/imageNoLayoutCacheNoLayout')->with('view_cache')->isCached(true)->checkResponseContent($image, 'image (no layout/action cache) in cache is not decorated when web_debug is on')->get('/cache/imageNoLayoutCacheNoLayout')->with('view_cache')->isCached(true)->checkResponseContent($image, 'image (no layout/action cache) in cache is not decorated when web_debug is on'); sfConfig::set('sf_web_debug', false); // check stylesheets, javascripts inclusions sfToolkit::clearDirectory(sfConfig::get('sf_app_cache_dir')); $b->get('/cache/multiBis')->with('request')->begin()->isParameter('module', 'cache')->isParameter('action', 'multiBis')->end()->with('response')->begin()->isStatusCode(200)->checkElement('link[href*="/main_css"]')->checkElement('script[src*="/main_js"]')->checkElement('link[href*="/partial_css"]')->checkElement('script[src*="/partial_js"]')->checkElement('link[href*="/another_partial_css"]')->checkElement('script[src*="/another_partial_js"]')->checkElement('link[href*="/component_css"]')->checkElement('script[src*="/component_js"]')->checkElement('#partial_slot_content', 'Partial')->checkElement('#another_partial_slot_content', 'Another Partial')->checkElement('#component_slot_content', 'Component')->end()->get('/cache/multiBis')->with('response')->begin()->checkElement('link[href*="/main_css"]')->checkElement('script[src*="/main_js"]')->checkElement('link[href*="/partial_css"]')->checkElement('script[src*="/partial_js"]')->checkElement('link[href*="/another_partial_css"]')->checkElement('script[src*="/another_partial_js"]')->checkElement('link[href*="/component_css"]')->checkElement('script[src*="/component_js"]')->checkElement('#partial_slot_content', 'Partial')->checkElement('#another_partial_slot_content', 'Another Partial')->checkElement('#component_slot_content', 'Component')->end(); $b->get('/cache/partial')->with('request')->begin()->isParameter('module', 'cache')->isParameter('action', 'partial')->end()->with('response')->begin()->isStatusCode(200)->checkElement('link[href*="/main_css"]', false)->checkElement('script[src*="/main_js"]', false)->checkElement('link[href*="/partial_css"]')->checkElement('script[src*="/partial_js"]')->checkElement('link[href*="/another_partial_css"]')->checkElement('script[src*="/another_partial_js"]')->checkElement('link[href*="/component_css"]', false)->checkElement('script[src*="/component_js"]', false)->checkElement('#partial_slot_content', 'Partial')->checkElement('#another_partial_slot_content', 'Another Partial')->checkElement('#component_slot_content', '')->end()->get('/cache/anotherPartial')->with('request')->begin()->isParameter('module', 'cache')->isParameter('action', 'anotherPartial')->end()->with('response')->begin()->isStatusCode(200)->checkElement('link[href*="/main_css"]', false)->checkElement('script[src*="/main_js"]', false)->checkElement('link[href*="/partial_css"]', false)->checkElement('script[src*="/partial_js"]', false)->checkElement('link[href*="/another_partial_css"]')->checkElement('script[src*="/another_partial_js"]')->checkElement('link[href*="/component_css"]', false)->checkElement('script[src*="/component_js"]', false)->checkElement('#partial_slot_content', '')->checkElement('#another_partial_slot_content', 'Another Partial')->checkElement('#component_slot_content', '')->end()->get('/cache/component')->with('request')->begin()->isParameter('module', 'cache')->isParameter('action', 'component')->end()->with('response')->begin()->isStatusCode(200)->checkElement('link[href*="/main_css"]', false)->checkElement('script[src*="/main_js"]', false)->checkElement('link[href*="/partial_css"]', false)->checkElement('script[src*="/partial_js"]', false)->checkElement('link[href*="/another_partial_css"]', false)->checkElement('script[src*="/another_partial_js"]', false)->checkElement('link[href*="/component_css"]')->checkElement('script[src*="/component_js"]')->checkElement('#partial_slot_content', '')->checkElement('#another_partial_slot_content', '')->checkElement('#component_slot_content', 'Component')->end(); $b->get('/')->with('view_cache')->isUriCached('cache/list', false)->get('/cache/list')->with('view_cache')->isUriCached('cache/list', true)->with('view_cache')->isUriCached('cache/list?page=10', false)->get('/cache/list?page=10')->with('response')->checkElement('#page', '10')->with('view_cache')->isUriCached('cache/list?page=10', true)->with('view_cache')->isUriCached('cache/list?page=20', false)->get('/cache/list?page=20')->with('response')->checkElement('#page', '20')->with('view_cache')->isUriCached('cache/list?page=20', true); // check for 304 response sfConfig::set('LAST_MODIFIED', strtotime('2010-01-01')); $b->get('/cache/lastModifiedResponse')->with('response')->isStatusCode(200); $b->setHttpHeader('If-Modified-Since', sfWebResponse::getDate(sfConfig::get('LAST_MODIFIED')))->get('/cache/lastModifiedResponse')->with('response')->isStatusCode(304); // test with sfFileCache class (default)
$response = $b->getResponse(); $content1 = $response->getContent(); $contentType1 = $response->getContentType(); $headers1 = $response->getHttpHeaders(); $b->get('/cache/action')->isStatusCode(200)->isRequestParameter('module', 'cache')->isRequestParameter('action', 'action')->isCached(true); $b->test()->is(sfConfig::get('ACTION_EXECUTED', false), false, 'action is not executed when in cache'); $response = $b->getResponse(); $content2 = $response->getContent(); $contentType2 = $response->getContentType(); $headers2 = $response->getHttpHeaders(); $b->test()->is($content1, $content2, 'response content is the same'); $b->test()->is($contentType1, $contentType2, 'response content type is the same'); $b->test()->is($headers1, $headers2, 'response http headers are the same'); } } $b = new myTestBrowser(); // non HTML cache $image = file_get_contents(dirname(__FILE__) . '/fixtures/apps/cache/modules/cache/data/ok48.png'); sfConfig::set('sf_web_debug', true); $b->get('/cache/imageWithLayoutCacheWithLayout')->isCached(true, true)->checkResponseContent($image, 'image (with layout/page cache) in cache is not decorated when web_debug is on')->get('/cache/imageWithLayoutCacheWithLayout')->isCached(true, true)->checkResponseContent($image, 'image (with layout/page cache) in cache is not decorated when web_debug is on')->get('/cache/imageWithLayoutCacheNoLayout')->isCached(true)->checkResponseContent($image, 'image (with layout/action cache) in cache is not decorated when web_debug is on')->get('/cache/imageWithLayoutCacheNoLayout')->isCached(true)->checkResponseContent($image, 'image (with layout/action cache) in cache is not decorated when web_debug is on')->get('/cache/imageNoLayoutCacheWithLayout')->isCached(true, true)->checkResponseContent($image, 'image (no layout/page cache) in cache is not decorated when web_debug is on')->get('/cache/imageNoLayoutCacheWithLayout')->isCached(true, true)->checkResponseContent($image, 'image (no layout/page cache) in cache is not decorated when web_debug is on')->get('/cache/imageNoLayoutCacheNoLayout')->isCached(true)->checkResponseContent($image, 'image (no layout/action cache) in cache is not decorated when web_debug is on')->get('/cache/imageNoLayoutCacheNoLayout')->isCached(true)->checkResponseContent($image, 'image (no layout/action cache) in cache is not decorated when web_debug is on'); sfConfig::set('sf_web_debug', false); // check stylesheets, javascripts inclusions sfToolkit::clearDirectory(sfConfig::get('sf_app_cache_dir')); $b->get('/cache/multiBis')->isStatusCode(200)->isRequestParameter('module', 'cache')->isRequestParameter('action', 'multiBis')->checkResponseElement('link[href*="/main_css"]')->checkResponseElement('script[src*="/main_js"]')->checkResponseElement('link[href*="/partial_css"]')->checkResponseElement('script[src*="/partial_js"]')->checkResponseElement('link[href*="/another_partial_css"]')->checkResponseElement('script[src*="/another_partial_js"]')->checkResponseElement('link[href*="/component_css"]')->checkResponseElement('script[src*="/component_js"]')->checkResponseElement('#partial_slot_content', 'Partial')->checkResponseElement('#another_partial_slot_content', 'Another Partial')->checkResponseElement('#component_slot_content', 'Component')->get('/cache/multiBis')->checkResponseElement('link[href*="/main_css"]')->checkResponseElement('script[src*="/main_js"]')->checkResponseElement('link[href*="/partial_css"]')->checkResponseElement('script[src*="/partial_js"]')->checkResponseElement('link[href*="/another_partial_css"]')->checkResponseElement('script[src*="/another_partial_js"]')->checkResponseElement('link[href*="/component_css"]')->checkResponseElement('script[src*="/component_js"]')->checkResponseElement('#partial_slot_content', 'Partial')->checkResponseElement('#another_partial_slot_content', 'Another Partial')->checkResponseElement('#component_slot_content', 'Component'); $b->get('/cache/partial')->isStatusCode(200)->isRequestParameter('module', 'cache')->isRequestParameter('action', 'partial')->checkResponseElement('link[href*="/main_css"]', false)->checkResponseElement('script[src*="/main_js"]', false)->checkResponseElement('link[href*="/partial_css"]')->checkResponseElement('script[src*="/partial_js"]')->checkResponseElement('link[href*="/another_partial_css"]')->checkResponseElement('script[src*="/another_partial_js"]')->checkResponseElement('link[href*="/component_css"]', false)->checkResponseElement('script[src*="/component_js"]', false)->checkResponseElement('#partial_slot_content', 'Partial')->checkResponseElement('#another_partial_slot_content', 'Another Partial')->checkResponseElement('#component_slot_content', '')->get('/cache/anotherPartial')->isStatusCode(200)->isRequestParameter('module', 'cache')->isRequestParameter('action', 'anotherPartial')->checkResponseElement('link[href*="/main_css"]', false)->checkResponseElement('script[src*="/main_js"]', false)->checkResponseElement('link[href*="/partial_css"]', false)->checkResponseElement('script[src*="/partial_js"]', false)->checkResponseElement('link[href*="/another_partial_css"]')->checkResponseElement('script[src*="/another_partial_js"]')->checkResponseElement('link[href*="/component_css"]', false)->checkResponseElement('script[src*="/component_js"]', false)->checkResponseElement('#partial_slot_content', '')->checkResponseElement('#another_partial_slot_content', 'Another Partial')->checkResponseElement('#component_slot_content', '')->get('/cache/component')->isStatusCode(200)->isRequestParameter('module', 'cache')->isRequestParameter('action', 'component')->checkResponseElement('link[href*="/main_css"]', false)->checkResponseElement('script[src*="/main_js"]', false)->checkResponseElement('link[href*="/partial_css"]', false)->checkResponseElement('script[src*="/partial_js"]', false)->checkResponseElement('link[href*="/another_partial_css"]', false)->checkResponseElement('script[src*="/another_partial_js"]', false)->checkResponseElement('link[href*="/component_css"]')->checkResponseElement('script[src*="/component_js"]')->checkResponseElement('#partial_slot_content', '')->checkResponseElement('#another_partial_slot_content', '')->checkResponseElement('#component_slot_content', 'Component'); // test with sfFileCache class (default) $b->launch(); // test with sfSQLiteCache class if (extension_loaded('SQLite')) { sfConfig::set('sf_factory_view_cache', 'sfSQLiteCache'); sfConfig::set('sf_factory_view_cache_parameters', array('database' => sfConfig::get('sf_template_cache_dir') . DIRECTORY_SEPARATOR . 'cache.db'));
checkElement('#action_local', '/une phrase locale en français/i')-> checkElement('#template_local', '/une phrase locale en français/i')-> // messages in another global catalogue checkElement('#action_other', '/une autre phrase en français/i')-> checkElement('#template_other', '/une autre phrase en français/i')-> // messages in another module catalogue checkElement('#action_other_local', '/une autre phrase locale en français/i')-> checkElement('#template_other_local', '/une autre phrase locale en français/i')-> end() ; } } $b = new myTestBrowser(); // default culture (en) $b-> get('/')-> with('request')->begin()-> isParameter('module', 'i18n')-> isParameter('action', 'index')-> end()-> with('response')->begin()-> isStatusCode(200)-> checkElement('#action', '/an english sentence/i')-> checkElement('#template', '/an english sentence/i')-> end()-> with('user')->isCulture('en') ;
$b->get('/cache/action')->isStatusCode(200)->isRequestParameter('module', 'cache')->isRequestParameter('action', 'action')->isCached(true); $b->test()->is(sfConfig::get('ACTION_EXECUTED', false), true, 'action is executed when not in cache'); sfConfig::set('ACTION_EXECUTED', false); $response = $b->getResponse(); $content1 = $response->getContent(); $contentType1 = $response->getContentType(); $headers1 = $response->getHttpHeaders(); $b->get('/cache/action')->isStatusCode(200)->isRequestParameter('module', 'cache')->isRequestParameter('action', 'action')->isCached(true); $b->test()->is(sfConfig::get('ACTION_EXECUTED', false), false, 'action is not executed when in cache'); $response = $b->getResponse(); $content2 = $response->getContent(); $contentType2 = $response->getContentType(); $headers2 = $response->getHttpHeaders(); $b->test()->is($content1, $content2, 'response content is the same'); $b->test()->is($contentType1, $contentType2, 'response content type is the same'); $b->test()->is($headers1, $headers2, 'response http headers are the same'); } } $b = new myTestBrowser(); $b->initialize(); // non HTML cache $image = file_get_contents($sf_symfony_data_dir . '/web/sf/sf_default/images/icons/ok48.png'); sfConfig::set('sf_web_debug', true); $b->get('/cache/imageWithLayoutCacheWithLayout')->isCached(true, true)->checkResponseContent($image, 'image (with layout/page cache) in cache is not decorated when web_debug is on')->get('/cache/imageWithLayoutCacheWithLayout')->isCached(true, true)->checkResponseContent($image, 'image (with layout/page cache) in cache is not decorated when web_debug is on')->get('/cache/imageWithLayoutCacheNoLayout')->isCached(true)->checkResponseContent($image, 'image (with layout/action cache) in cache is not decorated when web_debug is on')->get('/cache/imageWithLayoutCacheNoLayout')->isCached(true)->checkResponseContent($image, 'image (with layout/action cache) in cache is not decorated when web_debug is on')->get('/cache/imageNoLayoutCacheWithLayout')->isCached(true, true)->checkResponseContent($image, 'image (no layout/page cache) in cache is not decorated when web_debug is on')->get('/cache/imageNoLayoutCacheWithLayout')->isCached(true, true)->checkResponseContent($image, 'image (no layout/page cache) in cache is not decorated when web_debug is on')->get('/cache/imageNoLayoutCacheNoLayout')->isCached(true)->checkResponseContent($image, 'image (no layout/action cache) in cache is not decorated when web_debug is on')->get('/cache/imageNoLayoutCacheNoLayout')->isCached(true)->checkResponseContent($image, 'image (no layout/action cache) in cache is not decorated when web_debug is on'); sfConfig::set('sf_web_debug', false); // test with sfFileCache class (default) $b->launch(); // test with sfSQLiteCache class sfConfig::set('sf_factory_view_cache', 'sfSQLiteCache'); sfConfig::set('sf_factory_view_cache_parameters', array('database' => sfConfig::get('sf_template_cache_dir') . DIRECTORY_SEPARATOR . 'cache.db')); $b->launch();
; $b->test()->is(sfConfig::get('ACTION_EXECUTED', false), false, 'action is not executed when in cache'); $response = $b->getResponse(); $content2 = $response->getContent(); $contentType2 = $response->getContentType(); $headers2 = $response->getHttpHeaders(); $b->test()->is($content1, $content2, 'response content is the same'); $b->test()->is($contentType1, $contentType2, 'response content type is the same'); $b->test()->is($headers1, $headers2, 'response http headers are the same'); } } $b = new myTestBrowser(); // non HTML cache $image = file_get_contents(dirname(__FILE__).'/fixtures/apps/cache/modules/cache/data/ok48.png'); sfConfig::set('sf_web_debug', true); $b-> get('/cache/imageWithLayoutCacheWithLayout')-> with('view_cache')->isCached(true, true)-> checkResponseContent($image, 'image (with layout/page cache) in cache is not decorated when web_debug is on')-> get('/cache/imageWithLayoutCacheWithLayout')-> with('view_cache')->isCached(true, true)-> checkResponseContent($image, 'image (with layout/page cache) in cache is not decorated when web_debug is on')-> get('/cache/imageWithLayoutCacheNoLayout')-> with('view_cache')->isCached(true)-> checkResponseContent($image, 'image (with layout/action cache) in cache is not decorated when web_debug is on')-> get('/cache/imageWithLayoutCacheNoLayout')->
<?php /* * This file is part of the symfony package. * (c) 2004-2006 Fabien Potencier <*****@*****.**> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ $app = 'i18n'; if (!(include dirname(__FILE__) . '/../bootstrap/functional.php')) { return; } class myTestBrowser extends sfTestBrowser { public function checkResponseForCulture($culture = 'fr') { return $this->with('response')->begin()->checkElement('#action', '/une phrase en français/i')->checkElement('#template', '/une phrase en français/i')->checkElement('#action_local', '/une phrase locale en français/i')->checkElement('#template_local', '/une phrase locale en français/i')->checkElement('#action_other', '/une autre phrase en français/i')->checkElement('#template_other', '/une autre phrase en français/i')->checkElement('#action_other_local', '/une autre phrase locale en français/i')->checkElement('#template_other_local', '/une autre phrase locale en français/i')->end(); } } $b = new myTestBrowser(); // default culture (en) $b->get('/')->with('request')->begin()->isParameter('module', 'i18n')->isParameter('action', 'index')->end()->with('response')->begin()->isStatusCode(200)->checkElement('#action', '/an english sentence/i')->checkElement('#template', '/an english sentence/i')->end()->with('user')->isCulture('en'); $b->get('/fr/i18n/index')->with('request')->begin()->isParameter('module', 'i18n')->isParameter('action', 'index')->end()->with('response')->isStatusCode(200)->with('user')->isCulture('fr')->checkResponseForCulture('fr'); // change user culture in the action $b->get('/en/i18n/indexForFr')->with('request')->begin()->isParameter('module', 'i18n')->isParameter('action', 'indexForFr')->end()->with('response')->isStatusCode(200)->with('user')->isCulture('fr')->checkResponseForCulture('fr'); // messages for a module plugin $b->get('/fr/sfI18NPlugin/index')->with('request')->begin()->isParameter('module', 'sfI18NPlugin')->isParameter('action', 'index')->end()->with('user')->isCulture('fr')->with('response')->begin()->isStatusCode(200)->checkElement('#action', '/une phrase en français - from plugin/i')->checkElement('#template', '/une phrase en français - from plugin/i')->checkElement('#action_local', '/une phrase locale en français - from plugin/i')->checkElement('#template_local', '/une phrase locale en français - from plugin/i')->checkElement('#action_other', '/une autre phrase en français - from plugin but translation overridden in the module/i')->checkElement('#template_other', '/une autre phrase en français - from plugin but translation overridden in the module/i')->checkElement('#action_yetAnother', '/encore une autre phrase en français - from plugin but translation overridden in the application/i')->checkElement('#template_yetAnother', '/encore une autre phrase en français - from plugin but translation overridden in the application/i')->checkElement('#action_testForPluginI18N', '/une phrase en français depuis un plugin - global/i')->checkElement('#template_testForPluginI18N', '/une phrase en français depuis un plugin - global/i')->end();
<?php /* * This file is part of the symfony package. * (c) Fabien Potencier <*****@*****.**> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ $app = 'frontend'; $fixtures = 'fixtures/fixtures.yml'; if (!(include dirname(__FILE__) . '/../bootstrap/functional.php')) { return; } class myTestBrowser extends sfTestBrowser { public function getContext($forceReload = false) { parent::getContext($forceReload); sfPropel::initialize($this->context->getEventDispatcher()); return $this->context; } } $b = new myTestBrowser(); // en $b->get('/i18n/default')->isStatusCode(200)->isRequestParameter('module', 'i18n')->isRequestParameter('action', 'default')->checkResponseElement('#movies .default:first', '')->checkResponseElement('#movies .it:first', 'La Vita è bella')->checkResponseElement('#movies .fr:first', 'La Vie est belle'); // fr $b->get('/i18n/index')->isStatusCode(200)->isRequestParameter('module', 'i18n')->isRequestParameter('action', 'index')->checkResponseElement('#movies .default:first', 'La Vie est belle')->checkResponseElement('#movies .it:first', 'La Vita è bella')->checkResponseElement('#movies .fr:first', 'La Vie est belle'); // still fr $b->get('/i18n/default')->isStatusCode(200)->isRequestParameter('module', 'i18n')->isRequestParameter('action', 'default')->checkResponseElement('#movies .default:first', 'La Vie est belle')->checkResponseElement('#movies .it:first', 'La Vita è bella')->checkResponseElement('#movies .fr:first', 'La Vie est belle');