from collections import deque
def valid(i,j):
	return (0 <= i <= n-1) and (0 <= j <= m-1)
	
dir = [[1,0], [-1,0],[0,1],[0,-1]]
t = int(input())
for _ in range(t):
	n,m = map(int,input().split())
	arr = [input() for __ in range(n)]
	for i in range(n):
		for j in range(m):
			if arr[i][j] == 'B':
				for k in range(4):
					ni = i + dir[k][0]
					nj = j + dir[k][1]
					if valid(ni,nj) and arr[ni][nj] =='.':
						arr[ni] = arr[ni][:nj] + '#' + arr[ni][nj+1:]
						#arr[ni][nj] = '#'
	queue = deque([])
	visited = [[False for j in range(m)]for i in range(n)]
	if arr[n-1][m-1] =='.':
		queue.append([n-1,m-1])
		visited[n-1][m-1] = True
	while(queue):
		curr = queue.popleft()
		for k in range(4):
			ni = curr[0] + dir[k][0]
			nj = curr[1] + dir[k][1]
			if valid(ni,nj) and arr[ni][nj] != '#' and not visited[ni][nj]:
				queue.append([ni,nj])
				visited[ni][nj] = True
	good = True
	#print(visited)
	#print(arr)
	for i in range(n):
		for j in range(m):
			if (arr[i][j] == 'G' and not visited[i][j]) or (arr[i][j] =='B' and visited[i][j]):
				good = False
				break
	print("Yes" if good else "No")
	