require 'selenium-webdriver'
require 'rspec/expectations'
include RSpec::Matchers

def setup
    caps = Selenium::WebDriver::Remote::Capabilities.send("chrome")
    @driver = Selenium::WebDriver.for(:remote, url: "http://0.0.0.0:4444/wd/hub", desired_capabilities: caps)
    @driver.manage.window.size = Selenium::WebDriver::Dimension.new(1920, 1080)
end

def teardown
    @driver.quit
end

def run
    setup
    yield
    teardown
end

run do
    container_ip = ARGV[0]

    puts "Running tests against container IP: #{container_ip}"

    # Open the main page and check for the title
    site_url = "http://#{container_ip}"
    @driver.get site_url + '/'
    #@driver.save_screenshot(File.join(Dir.pwd, "selenium-docker-main-page.png"))
    expect(@driver.title).to eql 'wp plugindev – Just another WordPress site'

    puts 'Title test OK'


    @driver.get site_url + '/wp-admin'

    @driver.find_element(name: 'log').send_keys 'admin'
    @driver.find_element(name: 'pwd').send_keys 'admin'
    @driver.find_element(name: 'wp-submit').submit

    expect(@driver.title).to eql 'Dashboard ‹ wp plugindev — WordPress'

    puts 'Login test OK'

    @driver.get site_url + '/wp-admin/tools.php?page=wp-static-html-output-options'

    # setup export and run

    # get list of files from export folder (should be only one exported folder)

    # check contents of index.html file

    ## Generate a screenshot of the checkbox page
    @driver.save_screenshot(File.join(Dir.pwd, "selenium-docker-plugin-settings.png"))
end
