import collections

T = int(input())

for t_itr in range(T):
    N, M = map(int, input().split())
    A = []
    for _ in range(N):
        A.append(list(input()))

    result = True
    count = 0

    for j in range(N):
        for i in range(M):
            if A[j][i] == 'B':
                if j + 1 < N:
                    if A[j + 1][i] == 'G':
                        result = False
                    if A[j + 1][i] == '.':
                        A[j + 1][i] = '#'
                if j - 1 > -1:
                    if A[j - 1][i] == 'G':
                        result = False
                    if A[j - 1][i] == '.':
                        A[j - 1][i] = '#'
                if i + 1 < M:
                    if A[j][i + 1] == 'G':
                        result = False
                    if A[j][i + 1] == '.':
                        A[j][i + 1] = '#'
                if i - 1 > -1:
                    if A[j][i - 1] == 'G':
                        result = False
                    if A[j][i - 1] == '.':
                        A[j][i - 1] = '#'
            if A[j][i] == 'G':
                count += 1
        if not result:
            break

    # print(result,count)
    if A[N - 1][M - 1] == '#' and count > 0:
        result = False

    if result:
        stack = collections.deque()
        visited = set()
        stack.append(M * N - 1)
        found = False
        while stack:
            item = stack.pop()
            x, y = divmod(item, M)
            if item not in visited:

                if A[x][y] == 'G':
                    count -= 1

                if count == 0:
                    break

                visited.add(item)
                if x + 1 < N:
                    if A[x + 1][y] == '.' or A[x + 1][y] == 'G':
                        stack.append((x + 1) * M + y)
                if x - 1 > -1:
                    if A[x - 1][y] == '.' or A[x - 1][y] == 'G':
                        stack.append((x - 1) * M + y)
                if y + 1 < M:
                    if A[x][y + 1] == '.' or A[x][y + 1] == 'G':
                        stack.append((x) * M + y + 1)
                if y - 1 > -1:
                    if A[x][y - 1] == '.' or A[x][y - 1] == 'G':
                        stack.append((x) * M + y - 1)
        if count > 0:
            result = False

    # print(2,result,count)

    if result:
        print('Yes')
    else:
        print('No')
