Source
$this->assertTrue($this->query('xpath://button[@id="form"][@disabled][text()="Create graph (select host first)"]')
<?php
/*
** Zabbix
** Copyright (C) 2001-2025 Zabbix SIA
**
** This program is free software; you can redistribute it and/or modify
** it under the terms of the GNU General Public License as published by
** the Free Software Foundation; either version 2 of the License, or
** (at your option) any later version.
**
** This program is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
** GNU General Public License for more details.
**
** You should have received a copy of the GNU General Public License
** along with this program; if not, write to the Free Software
** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
**/
require_once dirname(__FILE__).'/../../include/CLegacyWebTest.php';
use Facebook\WebDriver\WebDriverBy;
/**
* @backup graphs
*/
class testPageHostGraph extends CLegacyWebTest {
public function testPageHostGraph_CheckLayout() {
$host_name = 'Host to check graph 1';
// Get graphs data on host.
$sql = 'SELECT graphid, name, width, height, graphtype'.
' FROM graphs'.
' WHERE graphid IN'.
'(SELECT graphid'.
' FROM graphs_items'.
' WHERE itemid IN'.
'(SELECT itemid'.
' FROM items'.
' WHERE hostid IN'.
'(SELECT hostid'.
' FROM hosts'.
' WHERE host='.zbx_dbstr($host_name).
')'.
')'.
')'.
'ORDER BY name';
$hostid = $this->openPageHostGraphs($host_name, 'host');
$this->zbxTestCheckTitle('Configuration of graphs');
$this->zbxTestCheckHeader('Graphs');
$filter = $this->query('name:zbx_filter')->asForm()->one();
$filter->checkValue(['Hosts' => $host_name]);
$this->zbxTestAssertElementPresentXpath('//button[@type="button"][text()="Create graph"]');
$this->zbxTestAssertElementPresentXpath('//span[@class="green"][text()="Enabled"]');
$this->zbxTestAssertElementPresentXpath('//span[@class="status-grey"][text()="ZBX"]');
// Check host breadcrumbs text and url.
$filter->getField('Hosts')->fill($host_name);
$filter->submit();
$breadcrumbs = [
self::HOST_LIST_PAGE => 'All hosts',
(new CUrl('zabbix.php'))
->setArgument('action', 'host.edit')
->setArgument('hostid', $hostid)
->getUrl() => $host_name,
'items.php?filter_set=1&filter_hostids%5B0%5D='.$hostid.'&context=host' => 'Items',
'triggers.php?filter_set=1&filter_hostids%5B0%5D='.$hostid.'&context=host' => 'Triggers',
'graphs.php?filter_set=1&filter_hostids%5B0%5D='.$hostid.'&context=host' => 'Graphs',
'host_discovery.php?filter_set=1&filter_hostids%5B0%5D='.$hostid.'&context=host' => 'Discovery rules',
'httpconf.php?filter_set=1&filter_hostids%5B0%5D='.$hostid.'&context=host' => 'Web scenarios'
];
$count_items = CDBHelper::getValue('SELECT COUNT(*) FROM items WHERE hostid='.$hostid);
$count_graphs = CDBHelper::getCount($sql);
foreach ($breadcrumbs as $url => $text) {
$this->assertTrue($this->query('xpath://a[@href="'.$url.'"][text()="'.$text.'"]')
->one()->isVisible()
);
// Check item and graph count.
if ($text === 'Items' || $text === 'Graphs') {
$get_number = $this->zbxTestGetText('//a[@href="'.$url.'"]/..//sup');
$this->assertEquals($get_number, ($text === 'Items') ? $count_items : $count_graphs);
}
}