kanbanworkflowstimelinescrumrubyroadmapproject-planningproject-managementopenprojectangularissue-trackerifcgantt-chartganttbug-trackerboardsbcf
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
51 lines
1.4 KiB
51 lines
1.4 KiB
4 years ago
|
class DownloadList
|
||
|
SHARED_PATH = Pathname.new(
|
||
|
ENV.fetch("CAPYBARA_DOWNLOADED_FILE_DIR", Rails.root.join('tmp/test/downloads'))
|
||
|
).join(
|
||
|
ENV.fetch('TEST_ENV_NUMBER', '1')
|
||
|
).tap {|f| p ["DownloadList::SHARED_PATH", f.to_s] ; f.mkpath }
|
||
|
|
||
|
def initialize
|
||
|
@history = []
|
||
|
@latest = nil
|
||
|
end
|
||
|
|
||
|
def refresh_from(page)
|
||
|
@latest = nil
|
||
|
if false
|
||
|
page.visit("about:downloads")
|
||
|
# give some time for page to load
|
||
|
sleep 0.5
|
||
|
download_name = page.evaluate_script("document.querySelector('downloads-manager').shadowRoot.querySelector('#downloadsList downloads-item').shadowRoot.querySelector('div#content #file-link')").text()
|
||
|
if download_name && !@history.include?(download_name)
|
||
|
Timeout.timeout(Capybara.default_max_wait_time) do
|
||
|
sleep 0.1 until SHARED_PATH.join(download_name).exist?
|
||
|
end
|
||
|
@latest = download_name
|
||
|
@history << @latest
|
||
|
end
|
||
|
else
|
||
|
sleep 0.5
|
||
|
@latest = Dir.glob(SHARED_PATH.join("*").to_s).max_by {|f| File.mtime(f) }
|
||
|
@history << @latest
|
||
|
end
|
||
|
self
|
||
|
end
|
||
|
|
||
|
def latest_download
|
||
|
return nil if @latest.nil?
|
||
|
SHARED_PATH.join(@latest)
|
||
|
end
|
||
|
|
||
|
def latest_downloaded_content
|
||
|
return nil if @latest.nil?
|
||
|
SHARED_PATH.join(@latest).read
|
||
|
end
|
||
|
|
||
|
def self.clear
|
||
|
Dir[SHARED_PATH.join("*")].each do |file|
|
||
|
FileUtils.rm_f(file)
|
||
|
end
|
||
|
end
|
||
|
end
|